Autofac:へSingleInstance'dタイプからリファレンスHttpRequestScoped
質問
私は共有オブジェクトごとのリクエストオブジェクトへの参照を必要とするアプリケーションを持っています。
Shared: Engine | Per Req: IExtensions() | Request私も
IExtensions
として、直接Engine
のコンストラクタにLazy(Of IExtension)
を注入しようとするは、私が「いいえ範囲マッチング[要求]インスタンスが要求された範囲から見えない。」を取得します例外は、各IExtension
をインスタンス化しようとしたときます。
私はそれジェクト共有インスタンスに、その後HttpRequestScopedインスタンスとを作成することができますどのように?
でしょう、それ(Request
に、したがって、注入Engine
)RequestFactory
の工場でそれを設定することをお勧めみなされる?
解決
により、あなたがすることはできませんEngine
の共有寿命要件に注入リクエストスコープの拡張、それに。あなたが持っている可能性は積極的に、現在のリクエストスコープからの拡張機能のコレクションを解決しますEngine上メソッドやプロパティです。
だから、最初、Engine
は、コンストラクタ依存性を見てみましょう。
public class Engine
{
public Engine(..., Func<IExtensions> extensionsPerRequest)
{
_extensionsPerRequest = extensionsPerRequest;
}
public IExtensions Extensions
{
get { return _extensionsPerRequest(); }
}
}
そして、あなたのAutofac登録でます:
builder.Register<Func<IExtensions>>(c => RequestContainer.Resolve<IExtensions>());
所属していません StackOverflow