1

我有一个这样定义的接口:

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

当我尝试这样做时: Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); 我收到以下错误:

System.TypeLoadException:System.TypeLoadException:方法实现中的主体签名和声明不匹配

怎么了?(我正在使用带有 nmock2 的 Visual Studio 2008)请大家给我一个答案,我必须尽快完成。谢谢,路易莎

4

2 回答 2

0

我认为这可能是 NMock 的一个问题,甚至可能是一个错误。该类型IDatabase不是通用的,因此当您调用 时,可以在运行时使用Get<T>不同的 s。T但是当 NMock 生成模拟时,它似乎并没有理解这种情况,而且 kablammo——每个方法签名都是不同的,具体取决于提供的类型参数。

尝试这样做:

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

另外,不应该是Getbe的类型T,不是void吗?

于 2010-02-14T16:44:47.067 回答
0

我自己的界面也有同样的例外。当我将界面更改为公开时​​,一切正常。

于 2012-03-06T10:05:07.057 回答