栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

TypeLoadException表示“未实现”,但已实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TypeLoadException表示“未实现”,但已实现

注意 -如果此答案对您没有帮助,请花一些时间向下滚动人们在此之后添加的其他答案。

简短答案

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

在这种情况下,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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号