Question

J'ai un assembly DLL, dans lequel se trouvent différentes classes.Chaque classe compte environ 50 à 100 membres et 4 à 5 fonctions.Comment puis-je créer une liste de toutes les classes et de leurs membres respectifs à l’aide d’un programme VB.NET ?

Je dois montrer à l'utilisateur pour effectuer une opération en utilisant une classe particulière.

Était-ce utile?

La solution

Autres conseils

En supposant que votre assembly soit chargé sur thisAsm (dans cet ex, j'utilise l'assembly en cours d'exécution),

Cela vous donnera toutes les classes non abstraites :

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

Et cela vous donnera toutes les classes qui implémentent une interface spécifique.

(Par exemple.Si vous avez besoin d'obtenir uniquement les classes qui implémentent IYourInterface, alors)

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

Une fois que vous avez cette liste d'éléments, vous pouvez afficher les membres de chaque type, en appelant GetProperties() et GetMethods() sur chaque membre de la liste des types.

Vous pouvez obtenir tous les types qui hérite de Formulaire VB.net:

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

Voici version vb.net fonction de la réponse @amazedsaint:

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()
Beaucoup

sont des exemples sur le web. Voici un (en C # bien).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top