Frage

Ich habe eine DLL Montage, in denen verschiedene Klassen gibt. Jede Klasse hat etwa 50-100 Mitglieder und 4-5 Funktionen. Wie kann ich eine Liste aller Klassen und ihre jeweiligen Mitglieder mit einem VB.NET-Programm erstellen?

Ich brauche zum Ausführen einer Operation unter Verwendung einer bestimmten Klasse an den Benutzer zu zeigen.

War es hilfreich?

Lösung

Sehen Sie die Dokumentation für System.Reflection.Assembly .GetTypes () und   System.Type.GetMembers ()

- larsw

Andere Tipps

Unter der Annahme, dass Sie Ihre Montage zu thisAsm geladen haben (in diesem ex ich die Ausführung Baugruppe verwendet wird),

Dies wird Ihnen alle nicht abstrakte Klassen bekommen:

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

Und das finden Sie alle Klassen erhalten, die eine bestimmte Schnittstelle implementiert.

(z. B. 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();

Wenn Sie diese Liste der Elemente haben, können Sie die Mitglieder jeder Art zeigen können, indem Sie die GetProperties () aufrufen und GetMethods () auf jedes Mitglied der Typenliste.

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

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

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

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
    .GetTypes()
    .Where(Function(t) t.IsClass AndAlso Not t.IsAbstract).ToList()

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
    .GetTypes()
    .Where(Function(t) ((GetType(IYourInterface).IsAssignableFrom(t) AndAlso t.IsClass AndAlso Not t.IsAbstract))).ToList()

Viele Beispiele sind auf dem Netz. Hier ein (in C # obwohl).

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