为什么Assembly.GetType()找不到我的类

本文关键字:找不到 我的 Assembly GetType 为什么 | 更新日期: 2023-09-27 18:08:53

代码节选:

var a = Assembly.LoadFile("MyAssembly.dll");
var t = a.GetType("MyNamespace.MyClass", false);
Debug.Assert(t != null); // fails

Assembly.LoadFile()正在加载程序集,没有任何麻烦,但Assembly.GetType()返回null,即使我已经验证MyNamespace.MyClass存在并且拼写正确。

还有其他原因吗?

为什么Assembly.GetType()找不到我的类

var t = a.GetType("MyNamespace.MyClass", false);

将该布尔值设置为true,这样您就可以得到一个可以解释问题的异常。对于不同的问题情况,您会得到单独的异常,请参阅MSDN或新文档。

实际的潜在问题是MyAssembly.dllOtherAssembly.dll有另一个依赖。一旦我在调用程序集中包含了对OtherAssembly.dll的引用,一切就正常了。

// Retrieve all classes that are typeof SomeClassOrInterface
List<Type> myTypes = assembly.GetTypes().Where(typeof(SomeClassOrInterface).IsAssignableFrom).ToList();
// Loop thru them or just use Active.CreateInstance() of the type you need
myTypes.ForEach(myType => {
    SomeClassOrInterface instance = Activator.CreateInstance(myType) as SomeClassOrInterface;                           
});

此代码示例在。net 4

下工作