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>に異なるTが使用される可能性があります。しかし、NMock がモックを生成しているとき、これが事実であることを理解していないようであり、kablammo は、指定された型パラメーターに応じて各メソッド シグネチャが異なります。

代わりにこれを試してください:

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

また、 の型は ではなく であるべきではありGetませTvoidか?

于 2010-02-14T16:44:47.067 に答える
0

私自身のインターフェースでも同じ例外がありました。インターフェイスをパブリックに変更すると、すべて正常に実行されます。

于 2012-03-06T10:05:07.057 に答える