編集#2:
優れたJson.NETライブラリを使用してdynamic
オブジェクトを逆シリアル化する方法について、以下にメモを追加しました。
編集#1:
Hoghweed's answer のおかげで、以下の私の答えはより完全になりました。具体的には、 -ness が期待どおりに機能するために、取得した をtoにキャストする必要があります。HttpContent
HttpResponseMessage.Content
ExpandoObject
dynamic
dynamic content = response.Content.ReadAsAsync<ExpandoObject>().Result;
var myPropertyValue = content.MyProperty;
ReadAsync<T>()
ただし、拡張メソッドを取得するには、NuGetを使用してパッケージSystem.Net.Http.Formatting.dll
からダウンロードしてインストールする必要があります (これは「古い」Nuget ページで、現在は上記のパッケージに含まれていることが記載されています)。Microsoft.AspNet.WebApi.Client
元の回答:
そのため、 POCOを作成したり、取得した XML/JSON 構造が変更されたときにそのプロパティを管理したりする必要はありません。dynamic
あなたのユースケースに最適なようです:
HttpResponseMessage response = await client.PostAsync(
"http://www.someAPI.com/api.xml", requestContent);
response.EnsureSuccessStatusCode();
dynamic content = response.Content.ReadAsAsync<ExpandoObject>().Result; // Notice the use of the dynamic keyword
var myPropertyValue = content.MyProperty; // Compiles just fine, retrieves the value of this at runtime (as long as it exists, of course)
特に XML に関して: Anoop MadhusudananElasticObject
dynamic
を試すことができますXML
。
特に JSON に関して: Json.NETを使用 して、次のようなことを行うことができます。
dynamic content = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);
var myPropertyValue = content.MyProperty;
Microsoft.AspNet.WebApi.Client
利点は、パッケージに依存しないことです(v4.0.30506.0
現時点では、Json.NET に依存しています)。欠点は、これを XML に使用できないことです。
お役に立てれば。