Ich versuche, den Wert einer Eigenschaft eines dynamischen Objekts abzurufen. Die JSON-Zeichenkette wird in ein dynamisches Objekt geparst/deserialisiert und dann möchte ich auf die Eigenschaft nach Namen zugreifen, gefolgt von dem get-Wert.So erhalten Sie den Eigenschaftswert eines dynamischen Typs, bei dem der Eigenschaftsname in einer Variablen in C# ist
string json = "{\"key1\":\"value1\", \"key2\": \"value2\"}";
dynamic d = JObject.Parse(json);
Console.WriteLine("Key1 : " + d.key1); //value1
Der obige Code funktioniert wie erwartet, aber wie erhält man den Wert mithilfe der Eigenschaft get nach Name, die in einer Variablen gespeichert ist?
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)
löst eine Ausnahme Cannot perform runtime binding on a null reference
Oder, wenn es eine alternative Lösung für dieses Problem ist.
Eine Alternative zu diesem Ansatz könnte sein, F Anbieter # Typ (möglicherweise in eine separate Baugruppe mit einer API oben drauf gepackt) zu verwenden. – BitTickler