Насмешливая помощь?Я не могу найти, в чем проблема

StackOverflow https://stackoverflow.com/questions/2261813

  •  20-09-2019
  •  | 
  •  

Вопрос

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

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

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

Система.Исключение TypeLoadException:Система.Исключение TypeLoadException:Подпись тела и объявление в реализации метода не совпадают

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

Это было полезно?

Решение

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

Попробуйте сделать это вместо этого:

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top