Eigenschaften von dynamischen Objekten in .NET 4 abrufen
Dynamische Objekte, die mit dem Schlüsselwort dynamic
in .NET 4 deklariert wurden, können beim Versuch, Eigenschaftswerte über Reflektion abzurufen, zu Herausforderungen führen.
Frage:
Wie erhalte ich ein Wörterbuch mit Attributnamen und den entsprechenden Werten von einem dynamischen Objekt?
Beispiel:
<code class="language-csharp">dynamic s = new ExpandoObject(); s.Path = "/Home"; s.Name = "Home"; // 如何枚举 Path 和 Name 属性并检索它们的值? IDictionary<string, object> propertyValues = ???</code>
Antwort:
Für ExpandoObject
Objekte ist die Lösung sehr einfach. ExpandoObject
implementiert die IDictionary<string, object>
-Schnittstelle für ihre Eigenschaften:
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
Bitte beachten Sie, dass diese Methode möglicherweise nicht für alle dynamischen Objekte funktioniert. Für allgemeinere dynamische Objekte müssen Sie das DLR über IDynamicMetaObjectProvider
verwenden.
Das obige ist der detaillierte Inhalt vonWie rufe ich Eigenschaften und Werte von einem dynamischen .NET 4-Objekt ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!