私はAutofacを使って自分のアプリケーションで依存関係を処理しています。しかし、実行時にリフレクションマジックを実行するコンポーネントが1つあり、コンパイル時に必要な依存関係はわかりません。サービスロケータとしてのAutofacの使用
通常、このコンポーネントはコンテナを直接参照し、必要なものを解決します。ただし、このクラスをインスタンス化しているクラスには、コンテナへの参照はありません。
私のコンポーネントは効果的に、Autofacに依存しています。私はより緩やかなカップリングを好むだろうが、それはここではオプションではないようだ。私のコンストラクタ内のコンテナへの参照を私に与えるためにAutofac(コンストラクタの引数で、またはプロパティインジェクションを使用するなど)を求める方法はありますか?または、Autofacに何かを解決できる魔法のサービスロケータオブジェクトを私に提供させるためのクリーンな方法はありますか?
コンポーネントが何をしているのかを知ることは面白いでしょう。おそらく、サービスロケータのパターン以外の方法があります。いくつかのコードで更新できますか? –
私はそれをかなりよく説明することができます。メッセージはバスを介して受信されるので、コードはメッセージが何らかのメタデータを使用しているかを判断し、前記タイプを構築する。次に、Autofacを使用して 'IConsume'(ここで 'type'はメタデータの型です)のすべての実装者を見つけて、その上でConsumeメソッドを呼び出す必要があります。 –
あなたは次のような意味を持っています:http://kozmic.pl/2010/03/11/advanced-castle-windsor-ndash-generic-typed-factories-auto-release-and-more/ –