2016-09-21 2 views
2

С этой проблемой много вопросов, и я работал с ними без радости.System.TypeLoadException: метод get_xxx не имеет реализации

Я получаю эту ошибку:

Method 'get_UserImageCDNUrl' in type 'App.Web.WebConfig' from assembly 'App.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

Что действительно странно, потому что я пытаюсь запустить Api.Web, который не имеет никакого отношения к App.Web, единственное, что они имеют общие ссылки на другие проектов (Models.Domain и Models.DTO).

У меня есть интерфейс:

IResourceCompiler в сборке "Models.Domain"

У меня есть абстрактный класс, который реализует этот интерфейс в той же сборке (Models.Domain) под названием WebConfigBase

В и «Api.Web» проектов «App.Web» каждый из них имеет класс называется WebConfig, которые наследуют от WebConfigBase, поэтому и WebConfig классы в App и Api являются реализациями IResourceCompiler.

Я пытался добавить свойство

string UserImageCDNUrl {get;} 

к IResourceCompiler и добавил свойство WebConfigBase

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

поэтому свойство будет доступен для обоих Api и веб-проектов за счет их собственный классы WebConfig, и я получаю исключение выше.

Я искал часы, чтобы попытаться понять, почему это происходит без радости.

Я очистил свои папки Obj, очистил, перестроил, проверял все экземпляры в GAC (их нет), и я все еще придерживаюсь этого.

Все работает отлично, пока я не пытаюсь добавить новое свойство к интерфейсу (и базовый класс)

ответ

2

OK, поэтому причудливо добавив ссылку на App.Web в Api.Web и удалив ее снова, она решила проблему.

Я понятия не имею, почему, но это так.

Я изменил версию App.Web на 1.0.0.1, и ошибка все еще показывала 1.0.0.0, что и побудило меня сделать это.

Желаю получить более разумное объяснение, но нет. Такая беспричинная проблема, которую я просто рад сделать с этим.

удачи кому-либо еще, кто испытывает это, мои мысли являются с вами

0

попробовать этот

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 ; 
} 
+0

Спасибо за ответ, я попробовал ваше предложение (используя виртуальный), но все равно не радость. Та же ошибка. Есть другие свойства, которые работают абсолютно нормально, это просто последнее изменение, которое вызывает проблему. Это как если бы где-то была кешированная версия, которая не обновляется, но я не знаю, где она! ggrr! – pieperu

+0

Еще одна вещь, которая меня действительно озадачивает, заключается в том, что ошибка возникает, когда я запускаю Api.Web, но ошибка в том, что проблема с App.Web. Api.Web и App.Web даже не знают друг о друге – pieperu

0

Во многих случаях я стала эта ошибка. Кажется Кэш-сборка и я нашел их в UserProfile.

Мое решение:

  1. Сохранить решение и закрыть Visual Studio
  2. Удалить всю папку "C: \ Users (пользователя) \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ProjectAssemblies \"
  3. Пуск Visual Studio
  4. Работа ...

Надеется, что это помогает.

 Смежные вопросы

  • Нет связанных вопросов^_^