Das dynamische Hinzufügen von Eigenschaften zur Laufzeit ist eine häufige Anforderung in verschiedenen Programmierszenarien. Während Ansätze wie die Verwendung von Wörterbüchern oder Sammlungen in bestimmten Situationen ausreichen können, sind sie möglicherweise nicht für alle Anwendungsfälle geeignet. Lassen Sie uns eine alternative Lösung erkunden, die ExpandoObject nutzt.
ExpandoObject ist eine integrierte Klasse in .NET, mit der Sie Mitglieder zur Laufzeit dynamisch hinzufügen und entfernen und so die Zuweisung und den Abruf von ermöglichen können Werte durch Standardpunktsyntax. Dieser Ansatz bietet eine bequeme Möglichkeit, dynamische Objekte mit Eigenschaften zu erstellen, die im laufenden Betrieb bestimmt werden.
Um ExpandoObject zu verwenden, können Sie einfach eine neue Instanz erstellen und nach Bedarf Eigenschaften zuweisen:
dynamic dynObject = new ExpandoObject(); dynObject.SomeDynamicProperty = "Hello!";
Wenn Sie spezielle Anforderungen an das Verhalten Ihres dynamischen Objekts haben, können Sie die DynamicObject-Klasse erweitern und benutzerdefinierte Logik für die Handhabung von Mitgliedszugriffen und -änderungen implementieren. Hier ist ein Beispiel:
sealed class MyDynObject : DynamicObject { private readonly Dictionary<string, object> _properties; public MyDynObject(Dictionary<string, object> properties) { _properties = properties; } public override IEnumerable<string> GetDynamicMemberNames() { return _properties.Keys; } public override bool TryGetMember(GetMemberBinder binder, out object result) { return _properties.TryGetValue(binder.Name, out result); } public override bool TrySetMember(SetMemberBinder binder, object value) { _properties[binder.Name] = value; return true; } }
Mit diesem benutzerdefinierten dynamischen Objekt können Sie dynamische Objekte mit Eigenschaften erstellen und diese zur Laufzeit dynamisch ändern:
var dyn = GetDynamicObject(new Dictionary<string, object>() { { "prop1", 12 } }); Console.WriteLine(dyn.prop1); dyn.prop1 = 150;
While Die Verwendung von DynamicObject bietet Flexibilität und Benutzerfreundlichkeit, bietet aber auch einiges Potenzial Nachteile:
Daher ist es wichtig, die Vorteile der dynamischen Objektmanipulation mit diesen Überlegungen abzuwägen, wenn Sie den für Ihre Entwicklungsanforderungen am besten geeigneten Ansatz auswählen.
Das obige ist der detaillierte Inhalt vonWie füge ich C#-Eigenschaften zur Laufzeit mithilfe von ExpandoObject und DynamicObject dynamisch hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!