我的代码中出现了System.TypeLoadException,其中包含以下描述:
Could not load type 'System.Func`2' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
这基本上就是我在错误附近做的事情,没有try-catch和其他对逻辑不重要的东西:
// assembly is an Assembly object
// derived is of type Derived, which is declared in assembly
// this line works fine
derived = assembly.CreateInstance(derivedClassName, true) as Base;
// this is fine
derived.Foo();
// Exception happens here
derived.Bar();
以下是Base的基础知识:
public abstract class Base : SomeOtherClass
{
protected Base() : base() {}
public void Foo()
{
// do stuff
}
}
以下是Derived的基础知识:
public class Derived : Base
{
// overrides SomeOtherClass.Foo(), which is the only abstract method
protected override void Foo()
{
// do stuff
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
缺少此通用类型的唯一mscorlib
是2.0之前的版本。检查您是否没有引用任何这些版本。
答案 2 :(得分:0)
我在C ++ / CLI项目中遇到了同样的问题。我无法在C#项目中使用C ++ / CLI DLL中的类。我可以从代码(Assembly.LoadFrom)加载程序集,我可以使用Reflection(Assembly.CreateInstance)创建我的类的实例,但如果我尝试在C#代码中使用类,我仍然收到TypeLoadException。
我的问题是可执行文件和Dll有相同的名称。