Es gibt zum Beispiel die ViewBag- Eigenschaft der ControllerBase
Klasse, und wir können dynamisch Werte abrufen / festlegen und diesem Objekt eine beliebige Anzahl zusätzlicher Felder oder Eigenschaften hinzufügen, was cool ist. Ich möchte so etwas jenseits der MVC-Anwendung und der Controller
Klasse in anderen verwenden Arten von Anwendungen. Als ich versuchte, ein dynamisches Objekt zu erstellen und seine Eigenschaft wie folgt festzulegen:
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
Ich habe RuntimeBinderException
mit der Nachricht Eigenschaft oder Indexer '<> f__AnonymousType0.A' kann nicht zugewiesen werden - es wird nur in Zeile 2 gelesen . Außerdem schlage ich vor, dass es nicht ganz das ist, wonach ich suche. Vielleicht gibt es eine Klasse, in der ich so etwas machen kann wie:
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
mit dynamischen Eigenschaften zum Hinzufügen und Einstellen.
Vor kurzem musste ich noch einen Schritt weiter gehen, indem ich die Eigenschaftsergänzungen im dynamischen Objekt basierend auf benutzerdefinierten Einträgen selbst dynamisch machte. Die Beispiele hier und in der ExpandoObject-Dokumentation von Microsoft befassen sich nicht speziell mit dem dynamischen Hinzufügen von Eigenschaften, sondern lassen sich aus der Aufzählung und dem Löschen von Eigenschaften ableiten . Jedenfalls dachte ich, das könnte jemandem helfen. Hier ist eine extrem vereinfachte Version des Hinzufügens wirklich dynamischer Eigenschaften zu einem ExpandoObject (Ignorieren von Schlüsselwörtern und anderen Handhabungen):
quelle
ExpandoObject
ist was du suchst.quelle
Sie können verwenden,
ExpandoObject Class
was imSystem.Dynamic
Namespace ist.Weitere Informationen finden Sie unter ExpandoObject MSDN
quelle
quelle
quelle
Oder Wert ist vorhanden
quelle