5

前回のプロジェクトで Unity を使用しましたが、概ね満足しています。しかし、ベンチマークでは、次のプロジェクトでは Simple Injector を使用する可能性があると考えています。

Containerただし、Simple Injector にはそのクラスのインターフェイスがないようです。これは、メソッドでコンテナを使用したいときはいつでも、単体テストのためにコンテナをモックできないことを意味します。

インターフェイスに基づいて実際に機能するツールが、それ自体がコンテナーへのインターフェイスを作成しないことに混乱しています。依存性注入の古典的な方法では、起動以外の場所にコンテナーが必要ないことを私は知っています。(残りはコンストラクター注入を使用します。)しかし、ゴムが道路にぶつかったときに、常にそうであるとは限らないことがわかりました。コードで「解決」を行うためにコンテナーが必要な場合があります。

Simple Injector を使用すると、そのコードの単体テストが難しくなるようです。

私は正しいですか?または、何か不足していますか?

4

2 に答える 2

0

ここで与えられた答えは、ServiceLocator がアンチパターンであることを受け入れることに完全に基づいていると思います. Windows Workflow Foundation の拡張機能のサポートを参照してください。

アンチパターン リンク (およびその 2 つの更新) も弱い可能性があります... 最新の更新では、カプセル化の違反が主張されています (「コード ベース内のすべてのコードのすべての実装の詳細を理解しなければならないという負担から解放されます。」 ) 同時に、依存関係の事前の知識は、その主張にとって、単体テストを介してそれらを発見することとは多少異なると主張しています。いずれにせよ、何を与えるべきかを知る必要があります。

全体として、Locator パターンに従いたい場合は、その IServiceProvider を活用するか、コンテナーの作成を (シングルトンに) 簡素化し、その静的ラッパーを作成します。

于 2016-09-07T18:02:28.413 に答える