データを監視/処理するための簡単なプロジェクトに取り組んでいます。基本的に、それは単なるモニター、スケジュール、およびプロセッサーです。モニターは、スケジュールを使用してデータ (ftp、local、imap、pop など) をチェックし、新しいデータをプロセッサに送信します。それらはすべてインターフェースを持っています。
config を使用して、各モニターが使用するスケジュール/プロセッサを構成する適切な方法を見つけようとしています。それはとても簡単です:
<monitor type="any.class.implementing.monitor">
<schedule type="any.class.implementing.schedule">
...
</schedule>
<processor type="any.class.implementing.processor" />
</monitor>
私が苦労しているのは、ミックスに投入された古いモニター/スケジュール/プロセッサーを構成する最良の方法は何かということです。一方では、コンストラクターのパラメーターまたはプロパティを実装できます (任意の構文を使用できます)。
<monitor type="any.class.implementing.monitor">
<args>
<arg value="..." />
</args>
<properties>
<property name="..." value=..." />
</properties>
<schedule type="any.class.implementing.schedule">
...
</schedule>
<processor type="any.class.implementing.processor" />
</monitor>
別の解決策は、カスタム構成をパラメーターとして受け取る各インターフェースのファクトリーメソッドです。
public IMonitor Create(CustomConfigSection config);
私は人々が両方を使用しているのを見てきました。あなたは何を好むか?構成をコンストラクターにマッピングするときの取引のトリックはありますか?
DIがこの混乱に収まるかどうかについて、私は少し引き裂かれています. 最終的には、監視インスタンスごとのバインディングのセットになります。これは、config がカバーできるデフォルトを除いて無意味に思えます。