In one of the actions, I do something like this
public HttpResponseMessage Post([FromBody] Foo foo)
{
.....
.....
var response =
Request.CreateResponse(HttpStatusCode.Accepted, new { Token = "SOME_STRING_TOKEN"});
return response;
}
and more methods like that return an anonymous type instance and it works well.
Now, I’m writing tests for it. I have
HttpResponseMessage response = _myController.Post(dummyFoo);
HttpResponseMessage has a property called Content and has a ReadAsAsync<T>().
I know that if there was a concrete specific type, I can do
Bar bar = response.Content.ReadAsAsync<Bar>();
but how do I access the anonymous type that’s being returned? Is it possible?
I was hoping to do the following:
dynamic responseContent = response.Content.ReadAsAsync<object>();
string returnedToken = responseContent.Token;
but I got the error that instance of type object does not have the property Token. This happens even though the debugger shows responseContent with one property Token. I understand why that’s happening, but I want to know if there is a way to access the Property.

Thanks
.ReadAsAsync<T>is an asynchronous method, meaning that it doesn’t return the whole deserialized object but aTask<T>to handle the continuation of the whole asynchronous task.You’ve two options:
1. Async pattern.
Use the
asynckeyword in your enclousing method (for example:public async void A()) and do the asynchronous call this way:2. Regular task API
Or just use the Task API:
It’s up to you!
Update
Before you posted the whole screenshot, no one could know that you’re calling
task.Waitin order to wait for the async result. But I’m going to maintain my answer because it may help further visitors 🙂As I suggested in a comment to my own answer, you should try deserializing to
ExpandoObject. ASP.NET WebAPI uses JSON.NET as its underlying JSON serializer. That is, it can handle anonymous JavaScript object deserialization to expando objects.