Liste der Klassen in einer Baugruppe
-
29-08-2019 - |
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.
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()