2010-05-10 6 views
2

j'essaie de diriger les types d'une .dll (qui est également référencé dans le projet d'exécution). J'appelle:assembly.GetTypes() ne retourne pas tous les types

public static void LoadPlugin(string pluginFile) 
    { 
     Assembly assembly = Assembly.LoadFrom(pluginFile); 

     foreach (Type type in assembly.GetTypes()) 
     { 
      // play with it 
     } 
    } 

charges Il juste un peu d'entre eux:

public partial class Mathematics : UserControl, IMathematics, IPortable 

et

public partial class Welcome : UserControl 

mais la suivante, et quelques autres, sont ignorés:

public partial class Test : UserControl, ITest, IPortable 

Ils sont tous dans le même assemblage, sous le s ame namespace. La méthode public static void LoadPlugin(string pluginFile) se trouve dans un autre assembly également référencé dans le projet en cours d'exécution.

Aucune exception n'est levée. Quels pourraient être les problèmes pour ne pas charger tous les types? Des idées?

+0

Je rencontre un problème similaire car GetTypes() ne renvoie PAS toutes les classes PUBLIC définies dans l'assembly et les deux ont l'attribut Export. Je ne sais pas si c'est une coïncidence ou quoi mais il se trouve que le type qui implémente une interface (comme vous l'avez) n'est PAS signalé alors que le type qui n'implémente PAS d'interface est signalé –

Répondre

2

sont les types ne sont pas chargées héritant d'un troisième ensemble qui n'est pas correctement référencé de l'ensemble d'appel?

+0

Salut, et merci pour la réponse. J'utilise 2 ensembles:. 1. contenant les types que je suis intéressé par ce projet a une référence dans le projet d'exécution. 2. un projet contenant une logique pour le chargement des assemblages. Celui-ci a une référence dans le no. 1. projet et aussi dans le projet d'exécution. Je viens de reconstruire le projet (supprimer tout, puis nouveau projet, ajouter des fichiers contenant des classes, etc.). Maintenant, pour une raison quelconque, je peux obtenir certains des types que je n'avais pas avant de reconstruire. En outre, certains des types que j'ai obtenus auparavant ne sont plus visibles. Où est-ce que je fais mal? – meta

Questions connexes