Wie man Objekte dynamisch erzeugt?
%Vor%Imaginary Class (Klasse ist im Code nicht verfügbar):
%Vor%Hinweis: Eigenschaften- / Spaltennamen sind dynamisch.
Nun möchte ich List<Dictionary<string, object>>
in eine Klasse vom Typ List<object>
(d. h.) List<Employee>
konvertieren.
Ist es möglich? Vorschläge bitte.
Verwenden eines anonymen Objekts (wenn Sie die Eigenschaften kennen, die Sie projizieren möchten):
%Vor%Oder verwenden Sie System.Dynamic.Expando (wenn Sie unbekannte Spaltennamen dynamisch projizieren müssen):
%Vor%Bearbeitet um "Emit" zu empfehlen.
Angesichts der Tatsache, dass Sie nicht einmal die Spaltennamen kennen, würde ich Reflection.Emit verwenden, um zuerst die Mitarbeiterklasse im laufenden Betrieb zu erstellen. Informationen zur Verwendung von Emit finden Sie Ссылка . Der Pseudocode ist dann:
%Vor%Der echte Code wird etwas komplizierter sein, da Emit nicht einfach ist. :)
Ja, das ist möglich, aber nicht ganz einfach.
Sie können Typen dynamisch definieren, z. über CodeDOM oder mit Reflection.Emit . Im Allgemeinen generiert Ihre Anwendung Codemodell (CodeDOM) oder IL-Anweisungen (Reflection.Emit), um einen neuen Typ zu erstellen. Je nach Ihren Bedürfnissen können Sie sogar die generierten DLLs speichern und später verwenden.
Dies ist zum Beispiel, wie Serializer-Assemblies in .NET generiert werden: Der Typ, der serialisiert werden soll, wird inspiziert, und benutzerdefinierte Serializer-Klassen werden speziell für diesen Typ generiert, so dass die Serialisierung nicht auf einer Spiegelung angewiesen ist Laufzeit.