icontainerを解決します
-
25-09-2019 - |
質問
アプリケーションのクラス内からAutoFACコンテナを取得するための提案された方法は何ですか? Autofacは、クラスでIcontainerプロパティを解決するために提供していますか、それとも構築したらコンテナをグローバルに保存する必要がありますか?
解決
あなたは必要になるでしょう IComponentContext
また ILifetimeScope
ほとんどの目的で。これらはAutoFACによって自動的に提供されるため、必要なのはそのうちの1つに(コンストラクター)依存性を取ることだけで、現在のインスタンスが注入されます。
両方のインターフェイスが標準を提供します Resolve()
操作、while ILifetimeScope
拡張 IComponentContext
新しいネストされた生涯を開始する方法を追加します。
コンテナのサービスを使用して他のコンポーネントにアクセスしたいコンポーネントは、「グローバル」ではなく、独自の範囲内で行う必要があります。 IContainer
, 、正しいインスタンスを返すことができるように。たとえば、HTTP要求内で、注入されます IComponentContext
また ILifetimeScope
現在のリクエストのためのものになります。
注入されたコンテキストを必要とするほとんどの問題は、関係タイプを使用して(しばしばよりエレガントに)克服することもできます - 参照してください。 http://autofac.readthedocs.org/en/latest/resolve/relationships.html.
所属していません StackOverflow