2008-12-29 8 views
5

Ich habe eine DLL-Assembly, in der es verschiedene Klassen gibt. Jede Klasse hat etwa 50-100 Mitglieder und 4-5 Funktionen. Wie kann ich mit einem VB.NET-Programm eine Liste aller Klassen und ihrer jeweiligen Mitglieder erstellen?Liste der Klassen in einer Baugruppe

Ich muss dem Benutzer zeigen, dass er eine Operation mit einer bestimmten Klasse ausführt.

Antwort

-2

Viele Beispiele sind im Internet. Hier ist one (in C# obwohl).

+0

-1 für keine Erklärung einschließlich über die Links hinaus. –

16

Unter der Annahme, dass Sie Ihre Montage zu thisAsm (in diesem ex ich bin mit dem ausgeführten Assembly) geladen haben,

Dadurch erhalten Sie alle nicht abstrakten Klassen:

Assembly thisAsm = Assembly.GetExecutingAssembly(); 
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList(); 

Und das wird Sie alle Klassen bekommen ses, das eine bestimmte Schnittstelle implementiert.

(zB. Wenn Sie nur die Klassen zu erhalten, die IYourInterface implementiert, dann)

Assembly thisAsm = Assembly.GetExecutingAssembly(); 
List<Type> types = thisAsm.GetTypes().Where 
      (t => ((typeof(IYourInterface).IsAssignableFrom(t) 
       && t.IsClass && !t.IsAbstract))).ToList(); 

Sobald Sie diese Liste der Elemente haben, können Sie die Mitglieder jeder Art zeigen können, durch Aufrufen der GetProperties() und GetMethods() für jedes Mitglied der Typenliste.

+1

Er fragte "mit VB-Programm" – TheSoftwareJedi

+1

Es sollte immer noch ziemlich einfach sein, die C# zu VB zu konvertieren. –

+0

+2 für eine tatsächliche Antwort mit tatsächlichem Code. -1 für nicht in VB.NET übersetzen. –

1

Sie können alle Arten erhalten, die von Form in VB.net erbt:

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly() 
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList() 
+1

ahh finaly in vb !!! –

0

Hier ist vb.net Version auf @amazedsaint Antwort basiert:

Verwandte Themen