質問

アプリケーションのクラス内からAutoFACコンテナを取得するための提案された方法は何ですか? Autofacは、クラスでIcontainerプロパティを解決するために提供していますか、それとも構築したらコンテナをグローバルに保存する必要がありますか?

役に立ちましたか?

解決

あなたは必要になるでしょう IComponentContext また ILifetimeScope ほとんどの目的で。これらはAutoFACによって自動的に提供されるため、必要なのはそのうちの1つに(コンストラクター)依存性を取ることだけで、現在のインスタンスが注入されます。

両方のインターフェイスが標準を提供します Resolve() 操作、while ILifetimeScope 拡張 IComponentContext 新しいネストされた生涯を開始する方法を追加します。

コンテナのサービスを使用して他のコンポーネントにアクセスしたいコンポーネントは、「グローバル」ではなく、独自の範囲内で行う必要があります。 IContainer, 、正しいインスタンスを返すことができるように。たとえば、HTTP要求内で、注入されます IComponentContext また ILifetimeScope 現在のリクエストのためのものになります。

注入されたコンテキストを必要とするほとんどの問題は、関係タイプを使用して(しばしばよりエレガントに)克服することもできます - 参照してください。 http://autofac.readthedocs.org/en/latest/resolve/relationships.html.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top