Il y a deux étapes pour y parvenir:
- L'
AppDomain.CurrentDomain.GetAssemblies()
vous donne toutes les assemblées chargées dans le domaine d'application actuel.
- L'
Assembly
classe fournit un GetTypes()
méthode pour récupérer tous les types au sein de cette assemblée.
Par conséquent, votre code pourrait ressembler à ceci:
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type t in a.GetTypes())
{
// ... do something with 't' ...
}
}
Pour chercher des types spécifiques (par exemple, la mise en œuvre d'une interface donnée, l'héritage d'un ancêtre commun ou quoi que ce soit), vous aurez pour filtrer les résultats. Dans le cas où vous avez besoin de le faire à plusieurs endroits dans votre application, il est une bonne idée de construire une classe d'assistance offrant différentes options. Par exemple, j'ai souvent appliquée préfixe d'espace de noms filtres, interface de mise en œuvre de filtres, et de la succession de filtres.
Pour obtenir une documentation détaillée regarder dans MSDN ici et ici.