質問
次のように定義されたインターフェイスがあります。
public interface IDatabase{ void Get<TTypeToFetch> ();}
そして私がやろうとすると:Mockery mockery = new Mockery();
IDatabase db = mockery.NewMock<IDatabase>();
次のエラーが表示されます。
System.TypeLoadException:System.TypeLoadException:本体の署名とメソッド実装の宣言が一致しません
なにが問題ですか?(私はNMOCK2でVisual Studio 2008を使用しています)誰もが私に答えを与えてくれませんか、私はこれをすぐに終了する必要があります。ありがとう、ルイサ
解決
これは NMock の問題、またはバグである可能性があると思います。タイプ IDatabase
は汎用ではないため、呼び出すとき Get<T>
, 、 違う T
は実行時に使用できます。しかし、NMock がモックを生成しているとき、NMock はこれが事実であることを理解していないようで、kablammo -- 各メソッドのシグネチャは、指定された型パラメータに応じて異なります。
代わりにこれを実行してみてください。
public interface IDatabase<T> {
void Get<T>();
}
また、 Get
なれ T
, 、 ない void
?
他のヒント
私は自分自身のインターフェイスと同じ例外を持っていました。私は公共のすべてのものであることをインタフェースを変更すると[OK]を実行します。
所属していません StackOverflow