System.TypeLoadException:无法加载类型'System.Func`2'

时间:2014-07-22 19:59:57

标签: c#

我的代码中出现了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
    }
}

3 个答案:

答案 0 :(得分:0)

啊,发现了这个问题。 BaseDerived在两个单独的项目中定义,这两个项目针对两个不同版本的.NET。有关详细信息,请参阅this question

答案 1 :(得分:0)

缺少此通用类型的唯一mscorlib是2.0之前的版本。检查您是否没有引用任何这些版本。

答案 2 :(得分:0)

我在C ++ / CLI项目中遇到了同样的问题。我无法在C#项目中使用C ++ / CLI DLL中的类。我可以从代码(Assembly.LoadFrom)加载程序集,我可以使用Reflection(Assembly.CreateInstance)创建我的类的实例,但如果我尝试在C#代码中使用类,我仍然收到TypeLoadException。

我的问题是可执行文件和Dll有相同的名称。

  • SomeProject.dll
  • SomeProject.exe