動的オブジェクトのプロパティの値を取得しようとしています。 JSON文字列は解析され/動的化されたオブジェクトに逆シリアル化され、次にget値の後に名前でプロパティにアクセスしたい。C#でプロパティ名が変数にある動的型のプロパティ値を取得する方法
string json = "{\"key1\":\"value1\", \"key2\": \"value2\"}";
dynamic d = JObject.Parse(json);
Console.WriteLine("Key1 : " + d.key1); //value1
上記のコードは期待どおり機能しますが、変数に格納されている名前でgetプロパティを使用して値を取得する方法はありますか?
string jsonKey = "key2";
string json = "{\"key1\":\"value1\", \"key2\": \"value2\"}";
dynamic d = JObject.Parse(json);
var jsonValue = d.GetType().GetProperty(jsonKey).GetValue(d, null); //throws exception - Cannot perform runtime binding on a null reference
Console.WriteLine("jsonValue : " + jsonValue);
GetProperty(jsonKey)
この問題に対する別の解決策がある場合は、例外Cannot perform runtime binding on a null reference
かをスローします。
このアプローチに代わるものは、F#型プロバイダを使用するかもしれません(おそらくその上にAPIで別のアセンブリに詰め):
は反射せずに値を取得するには、いくつかの方法があります。 – BitTickler