System.TypeLoadException:方法’get_xxx’没有实现

关于这个问题,有很多问题浮出水面,我已经完成了他们的工作,没有任何乐趣。

我收到此错误:

程序集’App.Web,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’类型’App.Web.WebConfig’中的方法’get_UserImageCDNUrl’没有实现。

这真的很奇怪,因为我试图运行没有引用App.Web的Api.Web,它们唯一的共同点是对其他项目的引用(Models.Domain和Models.DTO)。

我有一个界面:

IResourceCompiler在程序集“Models.Domain”中

我有一个抽象类,它在名为WebConfigBase的同一个程序集(Models.Domain)中实现此接口

在“App.Web”和“Api.Web”项目中,它们每个都有一个名为WebConfig的类,它inheritance自WebConfigBase ,因此App和Api中的WebConfig类都是IResourceCompiler的实现。

我试图添加一个属性

string UserImageCDNUrl {get;} 

IResourceCompiler并将属性添加到WebConfigBase

 public string UserImageCDNUrl { get { return ""; } } 

因此,通过自己的WebConfig类,Api和Web项目都可以访问该属性,并且我得到了上述例外。

我已经花了好几个小时试着看看为什么会发生这种情况并没有快乐。

我已经清除了我的Obj文件夹,清理,重建,检查了GAC中的任何实例(没有任何实例),我仍然坚持这一点。

一切正常,直到我尝试向接口(和基类)添加新属性

好的,如此奇怪地在Api.Web中添加对App.Web的引用并再次删除它已经解决了这个问题。

我不明白为什么,但确实如此。

我将App.Web的版本更改为1.0.0.1,错误仍然显示为1.0.0.0,这促使我这样做。

我希望有一个更合理的解释,但没有。 这样一个令人愤怒的问题我很高兴能够完成它。

祝其他体验过这一切的人好运,我的想法与你同在

在许多情况下,我成了这个错误。 它似乎是缓存程序集 ,我在UserProfile中找到它们。

我的解决方案是:

  1. 保存解决方案并关闭Visual Studio
  2. 删除整个文件夹“c:\ Users(user)\ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ProjectAssemblies \”
  3. 启动Visual Studio
  4. 工作…

希望能帮助到你。

试试这个

 public interface IResourceCompiler { string UserImageCDNUrl {get;} } public abstract class WebConfigBase : IResourceCompiler { public abstract string UserImageCDNUrl {get;} } public class WebConfig : WebConfigBase { public override string UserImageCDNUrl { return "whatever you want";} } 

或者那样:

 public interface IResourceCompiler { string UserImageCDNUrl {get;} } public abstract class WebConfigBase : IResourceCompiler { public virtual string UserImageCDNUrl {get { return string.empty;}} } public class WebConfig : WebConfigBase { public override string UserImageCDNUrl { return "whatever you want";} // or return base.UserImageCDNUrl ; } 

这可能有很多原因,所有以前的答案都代表了这个问题。

我建议做的是:
当你的程序运行打开资源监视器 – > CPU选项卡并在搜索句柄输入框中,搜索应该没有实现该方法的程序集。

在搜索结果中,您将看到assembly的路径,并且很可能您看到的路径不是您期望的路径。
从此意外路径中删除程序集,以便加载正确的程序集。

我只是删除了当前项目的引用(显示错误),并再次添加到其他项目中,这个项目被引用构建并且它开始正常工作。

希望这能有所帮助。