2008-12-29 9 views
5

J'ai un assemblage de DLL, dans lequel il existe plusieurs classes. Chaque classe a 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?Liste des classes d'un assemblage

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

Répondre

-2

De nombreux exemples sont sur le web. Voici one (en C# cependant).

+0

-1 pour ne pas inclure aucune explication au-delà des liens. –

16

En supposant que vous avez votre assemblée chargé de thisAsm (dans cet ex j'utilise l'assemblage d'exécution),

Cela vous obtiendrez toutes les classes non abstraites:

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

Et cela vous obtiendra tous les clas ses qui implémente une interface spécifique.

(Ex. Si vous avez besoin pour obtenir uniquement les classes qui implémente IYourInterface, puis) ​​

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'articles, vous pouvez afficher les membres de chaque type, en appelant les GetProperties() et GetMethods() sur chaque membre de la liste des types.

+1

Il a demandé « en utilisant le programme VB » – TheSoftwareJedi

+1

Il devrait encore être assez simple pour convertir le C# pour VB. –

+0

+2 pour fournir une réponse réelle avec le code réel. -1 pour ne pas le traduire en VB.NET. –

1

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

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 en vb !!! –

0

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

Questions connexes