Erstellen Sie ein Objekt, ohne zu wissen, den Namen der Klasse zur design-Zeit

StackOverflow https://stackoverflow.com/questions/53649

  •  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?

War es hilfreich?

Lösung

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top