2010-05-10 71 views
2

我尝试从.dll(它也在执行项目中引用)中领导类型。我呼吁:assembly.GetTypes()不返回所有类型

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

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

它加载只是其中的几个:

public partial class Mathematics : UserControl, IMathematics, IPortable 

public partial class Welcome : UserControl 

但接下来的一个,和其他一些人,被忽略:

public partial class Test : UserControl, ITest, IPortable 

他们都站在同一个大会,在s ame命名空间。 public static void LoadPlugin(string pluginFile)方法位于执行项目中也引用的其他程序集中。

不引发任何异常。 未加载所有类型的问题可能是什么?有任何想法吗?

+0

我有一个类似的问题,因为GetTypes()没有返回在程序集中定义的所有PUBLIC类,并且都具有Export属性。我不知道它是巧合还是什么,但它碰巧实现了一个接口的类型(就像你有)没有被报告,而不实现接口的类型被报告 – 2014-08-07 15:29:18

回答

2

未装载的类型是否从第三个程序集继承,该第三个程序集未从调用程序集中正确引用?

+0

嗨,并感谢您的答复。 我正在使用2个程序集: 1.包含我感兴趣的类型。此项目在执行项目中有参考。 2.包含加载程序集逻辑的项目。这个有一个在没有参考。 1.项目,也在执行项目中。 我刚刚重建了项目(删除所有内容,然后新建项目,添加了包含类的文件等)。现在,出于某种原因,我可以获得一些我在重建之前没有得到的类型。此外,我之前获得的一些类型不再可见。 我在哪里做错了? – meta 2010-05-10 09:38:41