質問

次のように定義されたインターフェイスがあります。

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]を実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top