Насмешливая помощь? Не могу найти в чем проблема - PullRequest
1 голос
/ 14 февраля 2010

У меня есть интерфейс, определенный следующим образом:

public interface IDatabase{ void Get<TTypeToFetch> ();}

и когда я пытаюсь сделать: Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); Я получаю следующую ошибку:

System.TypeLoadException: System.TypeLoadException: подпись тела и объявления в реализации метода не совпадают

Что не так? (Я использую Visual Studio 2008 с nmock2) Пожалуйста, могли бы все дать мне ответ, я должен закончить это в ближайшее время. Спасибо, Luisa

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

У меня было то же исключение с моим собственным интерфейсом. Когда я меняю интерфейс на общедоступный, все работает нормально.

0 голосов
/ 14 февраля 2010

Я думаю, что это может быть проблемой с NMock, возможно, даже ошибкой. Тип IDatabase не является универсальным, поэтому при вызове Get<T> во время выполнения могут использоваться разные T s. Но когда NMock генерирует макет, он, похоже, не понимает, что это так, и кабламмо - сигнатура каждого метода различна в зависимости от предоставленного параметра типа.

Попробуйте вместо этого:

public interface IDatabase<T> {
  void Get<T>();
}

Кроме того, тип Get не должен быть T, а не void?

...