Heim >Backend-Entwicklung >C++ >Wie kann ich zur Laufzeit dynamisch Eigenschaften zu C#-Objekten hinzufügen?
Dynamisches Hinzufügen von C#-Eigenschaften zur Laufzeit
Dieser Artikel baut auf früheren Diskussionen auf und untersucht einen alternativen Ansatz zum dynamischen Hinzufügen von Eigenschaften zu Objekten zur Laufzeit ohne Rückgriff auf Sammlungen oder Wörterbücher.
ExpandoObject
ExpandoObject bietet eine praktische Möglichkeit, Mitglieder dynamisch hinzuzufügen und zu entfernen. Es nutzt die .NET-Unterstützung für dynamische Bindung und ermöglicht Ihnen den Zugriff auf und das Festlegen von Eigenschaften mithilfe der Standardsyntax.
dynamic dynObject = new ExpandoObject(); dynObject.SomeDynamicProperty = "Hello!"; dynObject.SomeDynamicAction = (msg) => { Console.WriteLine(msg); }; dynObject.SomeDynamicAction(dynObject.SomeDynamicProperty);
Benutzerdefiniertes dynamisches Objekt
Für spezifischere Szenarien wenden Sie sich bitte an Sie Sie können Ihre eigene benutzerdefinierte DynamicObject-Implementierung erstellen. Dazu gehört die Definition einer Klasse, die von DynamicObject erbt, und die Handhabung des Mitgliedszugriffs und der Einstellungen in überschriebenen Methoden.
public static dynamic GetDynamicObject(Dictionary<string, object> properties) { return new MyDynObject(properties); } public sealed class MyDynObject : DynamicObject { private readonly Dictionary<string, object> _properties; public MyDynObject(Dictionary<string, object> properties) { _properties = properties; } // Overridden methods for member access and setting }
Verwendung:
var dyn = GetDynamicObject(new Dictionary<string, object>() { { "prop1", 12 }, }); Console.WriteLine(dyn.prop1); dyn.prop1 = 150;
Überlegungen:
Obwohl ExpandoObject- und benutzerdefinierte DynamicObject-Implementierungen Flexibilität bieten, bergen sie potenzielle Fallstricke. Verwenden Sie sie mit Vorsicht und berücksichtigen Sie dabei Auswirkungen auf die Leistung, die Erfahrung des Entwicklers und die Möglichkeit von Laufzeitausnahmen.
Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit dynamisch Eigenschaften zu C#-Objekten hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!