首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序集*中类型*中的System.TypeLoadException方法get_***没有实现吗?

程序集*中类型*中的System.TypeLoadException方法get_***没有实现吗?
EN

Stack Overflow用户
提问于 2011-05-27 12:37:55
回答 1查看 8.4K关注 0票数 6

我使用Reflexil程序将可执行文件Foo1.exe中的引用注入到名为Foo2.dll的外部程序集。

在Foo1.exe中,有一个名为Bar的类。

在Foo2.dll中,有一个接口IBar,它正确地实现了Bar的所有字段和方法。

我已经使用Reflexil在Foo1.exe中为Bar提供了在Foo2.dll中的接口IBar。

当Foo1.exe加载时,它会找到位于应用程序目录中的Foo2.dll并加载它,但它会抛出一个带有以下错误消息Method 'get_***' in type 'Foo1.Bar' from assembly 'Foo1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.的System.TypeLoadException

我已经用相同的错误信息(TypeLoadException says 'no implementation', but it is implemented)通读了上一个问题,但是当我没有对Foo1.exe进行任何编译器检查时,我无法弄清楚如何正确地实现修复。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-05 19:23:53

在以下情况下,我得到了相同的错误消息: A.dll依赖于B.dll,B.dll依赖于C.dll,并且找不到C.dll。在我的示例中,A.dll包含一个类C2,该类派生自位于同一程序集和同一dll - A.dll中的抽象类C1。C1由B.dll的C0类派生而来。C0具有带有抽象getter方法的抽象属性,C1有该属性的实现,但问题是该属性的getter的返回类型是在缺少的库C.dll中定义的。最后,它导致错误消息“来自程序集'A,Version=1.0.0.0,Culture=neutral,PublicKeyToken=xxxx‘的类型'C2’中的方法'get_Prop‘没有实现。”这在这种情况下是相当不相关的。简而言之,源代码如下所示:

C.dll:

代码语言:javascript
复制
namespace C {
  public enum PropType {V1 = 0, V2 = 1, ...}
}

B.dll:

代码语言:javascript
复制
using C;
namespace B {
  public abstract class C0 {
    ...
    public abstract C.PropType Prop {get;}
  }
}

A.dll:

代码语言:javascript
复制
using C;
using B;
namespace A {
  public abstract class C1 : B.C0 {
    ...
    // Getter implementation
    public override C.PropType Prop { get {return C.PropType.V1;}}
  }
}

using C;
using B;
namespace A {
  // Class implementation
  public class C2 : C1 {
    ...
  }
}

因此,解决方案是将C.dll添加到安装中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6147891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档