Heim >Backend-Entwicklung >C++ >Wie greife ich effizient auf Eigenschaften dynamischer Objekte in .NET zu?
Verwenden Sie Wörterbücher, um effizient auf die Eigenschaften dynamischer Objekte zuzugreifen
Hintergrund:
Beim Erstellen dynamischer Objekte mit dem Schlüsselwort dynamic
in .NET 4 kann es eine Herausforderung sein, ein Wörterbuch mit Eigenschaften und ihren Werten zu erhalten. Herkömmliche Reflexionsmethoden reichen möglicherweise nicht aus.
Attribute dynamischer Objekte:
Dynamische Objekte in .NET, wie z. B. ExpandoObject
, erstellen Eigenschaften dynamisch zur Laufzeit. Der Compiler kennt diese Eigenschaften nicht im Voraus, was es schwierig macht, mit Standardtechniken darauf zuzugreifen.
Lösung für ExpandoObject:
Zum Glück für ExpandoObject
gibt es eine einfache Lösung. Da ExpandoObject
die Schnittstelle IDictionary<string, object>
implementiert, können wir das dynamische Objekt direkt in diesen Typ umwandeln und auf seine Eigenschaften in Form eines Wörterbuchs zugreifen:
<code class="language-C#">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
Universelle dynamische Objekte:
Dieser Ansatz funktioniert jedoch nicht mit generischen dynamischen Objekten, die nicht von IDictionary<string, object>
erben. In diesem Fall müssen wir die Dynamic Language Runtime (DLR) nutzen. Hierzu wird die Schnittstelle IDynamicMetaObjectProvider
verwendet:
<code class="language-C#">var metaObject = (IDynamicMetaObjectProvider)s; var properties = metaObject.GetMetaObject(Expression.Constant(s)).GetDynamicMemberNames();</code>
Diese Methode beinhaltet komplexere DLR-Operationen und sollte für nichtExpandoObject
dynamische Objekte in Betracht gezogen werden.
Das obige ist der detaillierte Inhalt vonWie greife ich effizient auf Eigenschaften dynamischer Objekte in .NET zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!