为什么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
存在并且拼写正确。
还有其他原因吗?
var t = a.GetType("MyNamespace.MyClass", false);
将该布尔值设置为true
,这样您就可以得到一个可以解释问题的异常。对于不同的问题情况,您会得到单独的异常,请参阅MSDN或新文档。
实际的潜在问题是MyAssembly.dll
对OtherAssembly.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