Die wahren Vorteile von ExpandoObject
Einführung
Die in .NET 4 eingeführte ExpandoObject-Klasse ermöglicht Entwicklern, Objekten zur Laufzeit dynamisch Eigenschaften zuzuweisen. Dies hat zu Fragen über seine Vorteile gegenüber herkömmlichen Wörterbuchstrukturen geführt.
Syntactic Sugar
Obwohl ExpandoObject scheinbar die Syntax durch die Vereinfachung des Eigenschaftszugriffs verbessert, bietet es keine nennenswerten Funktionen Vorteile gegenüber Wörterbüchern. Der folgende Code:
dynamic obj = new ExpandoObject(); obj.MyInt = 3; obj.MyString = "Foo"; Console.WriteLine(obj.MyString);
Entspricht im Wesentlichen:
var obj = new Dictionary<string, object>(); obj["MyInt"] = 3; obj["MyString"] = "Foo"; Console.WriteLine(obj["MyString"]);
Hierarchische Objektdarstellung
Ein potenzieller Vorteil von ExpandoObject liegt in seiner Fähigkeit, komplexe hierarchische Objekte zu erstellen. Zum Beispiel:
Dictionary<String, object> dict = new Dictionary<string, object>(); Dictionary<String, object> address = new Dictionary<string,object>(); dict["Address"] = address; address["State"] = "WA"; Console.WriteLine(((Dictionary<string,object>)dict["Address"])["State"]);
Dieser Code wird mit ExpandoObject deutlich besser lesbar:
dynamic expando = new ExpandoObject(); expando.Address = new ExpandoObject(); expando.Address.State = "WA"; Console.WriteLine(expando.Address.State);
Ereignisbehandlung und Eigenschaftsbenachrichtigung
ExpandoObject implementiert das INotifyPropertyChanged-Schnittstelle, die im Vergleich zu Wörterbüchern eine bessere Kontrolle über Eigenschaften bietet. Darüber hinaus können Ereignisse zu ExpandoObject hinzugefügt werden, was eine dynamische Ereignisbehandlung ermöglicht.
Das obige ist der detaillierte Inhalt vonExpandoObject vs. Dictionary: Wann bietet die dynamische Eigenschaftszuweisung echte Vorteile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!