【问题标题】:assembly.GetTypes() does not return all typesassembly.GetTypes() 不返回所有类型
【发布时间】:2010-05-10 08:38:16
【问题描述】:

我尝试从 .dll 中引导类型(在执行项目中也引用了该类型)。我打电话:

    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

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

不抛出异常。 不加载所有类型可能是什么问题?有什么想法吗?

【问题讨论】:

  • 我遇到了类似的问题,因为 GetTypes() 没有返回程序集中定义的所有 PUBLIC 类并且都具有 Export 属性。我不知道这是巧合还是什么,但碰巧实现了接口的类型(就像你拥有的那样)没有被报告,而没有报告的类型没有实现接口

标签: c# assemblies load types


【解决方案1】:

未加载的类型是否继承自调用程序集未正确引用的第三个程序集?

【讨论】:

  • 您好,感谢您的回复。我正在使用 2 个程序集: 1. 包含我感兴趣的类型。这个项目在执行项目中有一个引用。 2. 一个包含加载程序集逻辑的项目。这个在没有参考。 1. 项目,也在执行项目中。我刚刚重建了项目(删除所有内容,然后删除新项目,添加包含类的文件等)。现在,由于某种原因,我可以得到一些我在重建之前没有得到的类型。此外,我之前得到的一些类型不再可见。我哪里做错了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2015-12-18
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多