Насмешливая помощь?Я не могу найти, в чем проблема
Вопрос
У меня есть интерфейс, определенный следующим образом:
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>
, разные T
s может быть использован во время выполнения.Но когда NMock генерирует макет, он, похоже, не понимает, что это так, и kablammo - сигнатура каждого метода отличается, в зависимости от предоставленного параметра типа.
Попробуйте сделать это вместо этого:
public interface IDatabase<T> {
void Get<T>();
}
Кроме того, не должен ли тип Get
быть T
, не void
?
Другие советы
У меня было такое же исключение с моим собственным интерфейсом.Когда я меняю интерфейс на общедоступный, все работает нормально.