我想要获取动态对象的属性值。 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