この質問は別の質問に関連している可能性があり、確かに System.BadImageFormatException が発生します。多分それは同じことですが、露出が異なりますか?
私は次のコードを持っています:
public interface IFoo<T> where T : class, new() {
T FooMethod(object o);
}
public interface IFooRepo {
F GetFoo<T, F>() where T : class, new() where F : IFoo<T>;
}
次に、次のように Moq を使用して IFooRepo をモックするテストがあります。
var instance = new Mock<IFooRepo>().Object;
上記のコードは、Visual Studio 2008 でテストをデバッグする場合を除いて正常に実行されます。これは、 Ayende Rahien が投稿したものと似ているでしょうか?
現在の回避策は、IFooRepo の偽物を実装することですが、この種のシナリオで悪いイメージが生成される理由について知りたいのですが、修正はありますか? System.Reflection.Emit はバグがありますか? または、自分のコードに明らかな何かが欠けていますか?
編集: GetFoo() の誤った署名を投稿しました。問題を正しく再現する署名を GetFoo<T, F>() に修正しました。GDR をインストールすると、この問題は解決しません。
編集: F の制約に型パラメーター T が含まれている場合、 BadImageFormatException が発生するようです。しかし、たとえば に変更するとwhere F : class, new()
、すべてが期待どおりに機能します。