私は、インターフェースで偽のオブジェクトを動的に作成する必要があります。この偽のオブジェクトのすべてのメソッドとプロパティは、単にNotImplementedExceptionをスローする必要があります。 .NETのリフレクションAPIだけで簡単に行う方法はありますか?インターフェースで偽のオブジェクトを作成する
答えて
城プロキシ実行時インタフェースのプロキシオブジェクトを生成するニートライブラリです。すべての主要なモッキングフレームワークでは、フードの下でCastle Proxiesも使用されます。
学習曲線はMoqのようなものを使用するよりも急ですが、Moqは単体テスト専用に設計されているため、あなたのニーズに適しています。そのため、APIは、後で。
キャッスルプロキシーがうまく動作しているようです。ありがとう。 –
Moqなどの模擬APIを使用できます。単体テストを模倣するように設計されていますが、必要な作業を行う必要があります。
唯一の解決策はReflection.Emitを使用することです。それは非常に単純ではありません:) C# Reflection: Emitting classes to existing assembliesまたはReflection Emitを参照してください。
Moq(別の回答で示唆されているように)はReflection.Emitを使用しているライブラリなので簡単な解決策です! – bang
ImpromptuInterfaceが役に立ちます。
(そのホームページからコピーされた)サンプルコードは、次のとおり
using ImpromptuInterface;
using ImpromptuInterface.Dynamic;
public interface IMyInterface{
string Prop1 { get; }
long Prop2 { get; }
Guid Prop3 { get; }
bool Meth1(int x);
}
//Anonymous Class
var anon = new {
Prop1 = "Test",
Prop2 = 42L,
Prop3 = Guid.NewGuid(),
Meth1 = Return<bool>.Arguments<int>(it => it > 5)
}
IMyInterface myInterface = anon.ActLike<IMyInterface>();
- 1. 偽のActiveRecordオブジェクトを作成する方法
- 2. 検索インターフェースを作成する - android
- 3. フルスクリーンの「偽の」枠を作成する
- 4. Typescriptのインターフェースに従ってオブジェクトを新規に作成するには?
- 5. FakeItEasyクラスの偽物を作成する
- 6. 偽のステータスバー情報を作成する
- 7. 偽のQNetworkAccessManagerを作成するには
- 8. ブログ投稿作成インターフェース
- 9. Django:管理インターフェースでフィールドを偽っていますか?
- 10. 偽のファイルハンドルの作成
- 11. Javaオブジェクト、インターフェース
- 12. オブジェクトを偽装する
- 13. アダプターとビューホルダーの間のインターフェースを作成する方法
- 14. Google Maps APIの偽のテストレスポンスを作成
- 15. rspecで宝石をテストするための偽のレールの `request`オブジェクトを作成する方法
- 16. htmlとjavascriptで偽の入力を作成する方法
- 17. Pythonで偽のテキストファイルを作成するには
- 18. laravel 5.4で偽の列名を作成するには?
- 19. JPAで偽の述語を作成する方法
- 20. 角度単位テストで偽のNgFormオブジェクトを作成するにはどうすればよいですか?
- 21. htaccessの偽のフォルダ作成の挑戦
- 22. のEclipse - EJBプロジェクト - EclipseでEJBプロジェクトの作成時にインターフェース
- 23. htmlを使用して偽のダウンロードリンクを作成する方法
- 24. CKEditorカスタムプラグイン用の偽の画像を作成する
- 25. 角の丸い偽のタブを作成するには?
- 26. 偽のレスポンスを作成する方法(Pythonライブラリの "要求")
- 27. Mac OSでこのようなインターフェースを作成する方法は?
- 28. wagtailでAPIをテストするための偽のデータベースを作成する
- 29. C++でオブジェクトのコピーを作成する
- 30. C++でインターフェイスのオブジェクトを作成する
モックライブラリを使用する必要があるようです。なぜあなたはNotImplementedExceptionを持つクラスを持つ必要がありますか?おそらく、モックを使用するよりも優れた解決策があります。 – Archeg
私は、インターフェイスとそのインターフェイスを実装するクラスを含むアセンブリでいっぱいのフォルダを持つ1つのアセンブリを持っています。したがって、アプリケーションの起動時に、このフォルダをスキャンし、すべてのインターフェイスをCastle IoCコンテナに実装して登録しています。しかし、いくつかの実装が欠落しているので、実行時に欠落しているものがあることを私に知らせるために例外をスローする偽のクラスを生成する必要があります。本当に大きなアプリケーションなので、これらの偽のクラスを手動で作成したくありません。 –