Ich möchte einem ExpandoObject zur Laufzeit dynamisch Eigenschaften hinzufügen. Um beispielsweise einen String-Eigenschaftsaufruf NewProp hinzuzufügen, möchte ich so etwas schreiben
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
Ist das leicht möglich?
c#
c#-4.0
dynamic
expandoobject
Craig
quelle
quelle
Antworten:
Alternative:
quelle
Error 53 Cannot convert type 'System.Dynamic.ExpandoObject' to 'System.Collections.Generic.IDictionary<string,string>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
IDictionary<string, object>
nichtIDictionary<string, string>
.IDictionary
nichtdynamic
als Variablentyp verwenden.Wie hier von Filip erklärt - http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
Sie können zur Laufzeit auch eine Methode hinzufügen.
quelle
Hier ist eine Beispiel-Hilfsklasse, die ein Objekt konvertiert und ein Expando mit allen öffentlichen Eigenschaften des angegebenen Objekts zurückgibt.
Verwendung:
quelle
Ich denke, dies fügt eine neue Eigenschaft im gewünschten Typ hinzu, ohne einen primitiven Wert festlegen zu müssen, wie wenn die Eigenschaft in der Klassendefinition definiert ist
quelle