Heim >Backend-Entwicklung >C++ >Wie kann ich zur Laufzeit dynamisch Eigenschaften zu C#-Objekten hinzufügen?

Wie kann ich zur Laufzeit dynamisch Eigenschaften zu C#-Objekten hinzufügen?

DDD
DDDOriginal
2024-12-29 22:34:18456Durchsuche

How Can I Dynamically Add Properties to C# Objects at Runtime?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn