代码摘录:
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
存在且拼写正确。
为什么会发生这种情况还有其他想法?
答案 0 :(得分:10)
在第
行var t = a.GetType("MyNamespace.MyClass", false);
将该布尔值设置为true
,以便获得可以解释问题的异常。对于各种问题情况,您会收到单独的例外情况,请参阅MSDN或新的docs。
答案 1 :(得分:5)
实际的潜在问题是MyAssembly.dll
对OtherAssembly.dll
有另一种依赖关系。一旦我在调用程序集中包含对OtherAssembly.dll
的引用,一切正常。
答案 2 :(得分:0)
// 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