TypeLoadException 说“没有实现”,但它已实现

2024-02-12

我的测试机器上有一个非常奇怪的错误。错误是:

System.TypeLoadException: Method 'SetShort' in type 'DummyItem' from assembly 'ActiveViewers (...)' does not have an implementation.

我就是不明白为什么。SetShort有在DummyItem类,我什至重新编译了一个版本,并写入事件日志,只是为了确保这不是部署/版本控制问题。奇怪的是调用代码甚至没有调用SetShort method.


NOTE- 如果这个答案对您没有帮助,请花点时间向下滚动浏览人们此后添加的其他答案。

简短回答

如果您将方法添加到一个程序集中的接口,然后添加到另一个程序集中的实现类,但您重建实现程序集而不引用新版本的接口程序集,则可能会发生这种情况。

在本例中,DummyItem 实现另一个程序集的接口。 SetShort 方法最近被添加到界面和 DummyItem 中 - 但包含 DummyItem 的程序集是参考界面程序集的先前版本而重建的。因此,SetShort 方法实际上在那里,但没有将其链接到接口中的等效方法的魔法。

长答案

如果您想尝试重现此情况,请尝试以下操作:

  1. 创建一个类库项目:InterfaceDef,仅添加一个类,然后构建:

    public interface IInterface
    {
        string GetString(string key);
        //short GetShort(string key);
    }
    
  2. 创建第二个类库项目:实现(使用单独的解决方案),将 InterfaceDef.dll 复制到项目目录中并添加为文件引用,仅添加一个类,然后构建:

    public class ImplementingClass : IInterface
    {
        #region IInterface Members
        public string GetString(string key)
        {
            return "hello world";
        }
    
        //public short GetShort(string key)
        //{
        //    return 1;
        //}
        #endregion
    }
    
  3. 创建第三个控制台项目:ClientCode,将两个dll复制到项目目录中,添加文件引用,并将以下代码添加到Main方法中:

     IInterface test = new ImplementingClass();
     string s = test.GetString("dummykey");
     Console.WriteLine(s);
     Console.ReadKey();
    
  4. 运行代码一次,控制台显示“hello world”

  5. 取消注释两个 dll 项目中的代码并重建 - 将两个 dll 复制回 ClientCode 项目,重建并再次尝试运行。尝试实例化 ImplementingClass 时会发生 TypeLoadException。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeLoadException 说“没有实现”,但它已实现 的相关文章

随机推荐

  • 如何自动弹出键盘?

    我有编辑文本字段 我必须在其中输入密码 但我必须推送此字段 如何在不触摸编辑文本的情况下自动弹出键盘 有一个编辑文本 xml 字段
  • Java:类继承自身

    我知道这是毫无意义的 我只是觉得这很有趣 我想更多地了解当您创建一个继承自身的类时会发生什么 从而导致堆栈溢出崩溃 令人惊奇的是 Java 允许您首先进行这样的构造 我只是猜测 但是 JVM 是否将自身置于无限循环中 试图在实例化该类之前解
  • 如何列出 Google Cloud Platform 项目的所有启用的 API 服务

    我们管理着几十个 GCP 项目 但我一直不知道如何在网站上列出每个项目所有启用的 API 服务 有一种方法可以通过 Cloud Shell 运行控制台命令来完成此操作 gcloud services list 如果我访问https cons
  • 实体框架和 Oracle Db 中的 CLOB 字符串

    我有这个模型 public class Teacher public int TeacherID get set public string Name get set public string Surname get set 当模型首次运
  • .htaccess 用于附加 https://www [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经搜索了很长一段时间来获得解决方案或对我的查询的提示 但没有找到任何有价值的东西 基本上我的应用程序是受 SSL 保护的 我想要的只是 如果用户尝
  • 具有可排序功能的 jQuery 树视图

    我只是想知道是否有人知道有什么方法可以让 bassistance 树视图插件与 jQuery UI 的可排序插件一起使用 特别是能够将元素从嵌套 ul 拖放到父 ul 或反之亦然 另外两个要求是我能够防止拖放到指定元素上 例如 class
  • 为 Ruby Resolv.getaddress(ip) 设置超时

    我找不到在 Ruby 文档中 http ruby doc org stdlib 1 9 3 libdoc resolv rdoc Resolv html关于如何使用来自 Ruby std 库的 Resolv 类的类方法 getaddress
  • tv4.validate 始终返回 true。即使我的模式无效,即: var == "dummy"

    tv4 validate 将始终返回 true 无论架构是有效的 JSON 还是只是虚拟字符串 我浏览 stackoverflow 查找相关问题 但 banUnknownProperties 对我没有帮助 正如我所说 我什至尝试将架构变量更
  • 使用cmake编译并包含调试信息

    cmake版本2 8 5 我正在尝试使用 cmake 编译我的项目 但是 当我编译时 我认为我没有包含调试cflags 即 ggdb D DEBUG 当我尝试调试时 没有调试信息 CMakeLists txt 文件是否有任何问题 我有 3
  • ASP.NET MVC 控制器单元测试 - UrlHelper 扩展问题

    尝试做一些控制器在我的 ASP NET MVC 3 Web 应用程序中进行单元测试 我的测试是这样的 TestMethod public void Ensure CreateReviewHttpPostAction RedirectsApp
  • 如何限制WCF服务的请求执行时间?

    WCF 配置中是否有某些内容定义了在服务端执行请求的超时 例如 WCF 服务将在一段时间后停止执行请求 我有一项服务 可以根据客户的输入进行一些工作 在某些情况下 此类调用可能会花费太多时间 我想限制服务端此类请求的执行时间 而不是使用 S
  • 如何使用笔记本中的某些命令在 databricks 集群上安装库?

    实际上 我想在我的 Azure databricks 集群上安装一个库 但我无法使用 UI 方法 因为每次我的集群发生变化并且在转换过程中我无法使用 UI 将库添加到其中 是否有任何 databricks 实用程序命令可以执行此操作 CHE
  • 是否可以在 Vim 中交互式删除匹配的搜索模式?

    我想在 Vim 中寻找一个短语 找到后 我想删除该短语的出现 循环遍历所有事件的最简单方法是什么 通过n 并一一删除匹配项 我不想一次删除所有匹配项 Note 我知道我可以删除一定数量的字符或一定数量的单词 但我想专门删除搜索的匹配项 这可
  • Node.js 中的 cURL 等效项?

    我希望使用来自 Node js 的 HTTP 请求的信息 即调用远程 Web 服务并将响应回显给客户端 在 PHP 中我会使用 cURL 来做到这一点 Node 的最佳实践是什么 有关完整示例 请参阅 HTTP 模块的文档 https no
  • 在所有子图上显示 x 刻度和唯一的 y 标签

    我正在绘制共享相同 x 轴的两个子图 但是当我绘制时 我只看到第二个子图上的 x 轴刻度 如何使 x 刻度在两个子图上都可见 另外 我想为两个子图设置 y 标签 但只有第二个子图可见 您能帮忙在两个子图上显示 y 标签吗 下面是我的可重现代
  • Python Flask 跨站点 HTTP POST - 不适用于特定允许的来源

    我正在尝试让 Flask 正确处理跨站点脚本 我从这里获取了跨域装饰器片段 http flask pocoo org snippets 56 http flask pocoo org snippets 56 在下面的代码中 我放置了装饰器片
  • Python xlib 更改光标

    如何使用 Xlib 在 python 应用程序中设置根窗口 或任何其他窗口 的光标 我有一个实例display and window 根窗口 使用 C 绑定 我可以用X定义光标 https tronche com gui x xlib wi
  • 获取并发中异常的原始行号。futures

    使用并发 futures 的示例 2 7 的向后移植 import concurrent futures line 01 def f x line 02 return x x line 03 data 1 2 3 None 5 line 0
  • 带回调的 JSONP 和 GET - 需要帮助纠正错误

    这是我的 JSONP 文件
  • TypeLoadException 说“没有实现”,但它已实现

    我的测试机器上有一个非常奇怪的错误 错误是 System TypeLoadException Method SetShort in type DummyItem from assembly ActiveViewers does not ha