Erstellen Sie ein Objekt, ohne zu wissen, den Namen der Klasse zur design-Zeit
-
09-06-2019 - |
Frage
Die Verwendung von reflektion, die ich brauche, zu untersuchen, die ein Benutzer von DLL und erstellen ein Objekt einer Klasse, in der es.
Was ist der einfache Weg, es zu tun?
Lösung
Versuchen Sie Activator.CreateInstance .
Andere Tipps
System.Reflection.Assembly
ist die Klasse die Sie verwenden möchten. Es enthält viele Verfahren über die mit einem Benutzer-DLL enthaltenen Typen iterieren. Sie können durch jede Klasse durchlaufen, vielleicht sehen, ob es von einer bestimmten Schnittstelle erbt etc.
http://msdn.microsoft.com/en -US / library / system.reflection.assembly_members.aspx
Untersuchen Assembly.GetTypes()
Methode für das Erhalten der Liste der Typen oder Assembly.GetExportedTypes()
für die Öffentlichkeit diejenigen nur.
Sie können eine Instanz einer Klasse aus einem Typ-Objekt mit Activator.CreateInstance erstellen, um alle Typen in einer DLL erhalten Sie Assembly.GetTypes verwenden können,
Werfen Sie einen Blick auf diese Links gilt:
http://www.java2s.com/Code/CSharp /Development-Class/Createanobjectusingreflection.htm
http://msdn.microsoft.com/en-us/library /k3a58006.aspx
Sie verwenden im Grunde Reflexion eine Baugruppe zu laden, dann eine Art finden Sie interessiert sind. Wenn Sie die Art haben, können Sie fragen, es ist Bauer oder andere Methoden / Eigenschaften zu finden. Sobald Sie den Konstruktor haben, können Sie es aufrufen. Easy!
Wie bereits gesagt wurde, müssen Sie das System.Reflection-Namespace stecken.
Wenn Sie im Voraus wissen, die Position / Name der DLL, die Sie laden möchten, müssen Sie durch die Assembly.GetTypes iterieren ().
In Pseudocode würde es wie folgt aussehen:
Erstellen und Assembly-Objekt.
Iteration durch alle Typen in der Baugruppe enthalten ist.
Wenn Sie das finden die Sie suchen, rufen Sie es (CreateInstance) ...
Verwenden Sie es mit Bedacht aus.
;)
Ich habe viel Reflexion Code, wenn Sie einen Blick herum nehmen wollen, aber die Aufgabe ist es wirklich einfach und es gibt mindestens ein Dutzend von Artikeln mit Proben dort in der Wildnis. (Aka Google). Trotzdem ist die MSDN Ihr Freund für Reflection Referenz.