質問

私は共有オブジェクトごとのリクエストオブジェクトへの参照を必要とするアプリケーションを持っています。

Shared:      Engine
                |
Per Req:  IExtensions()
                |
             Request
私もIExtensionsとして、直接EngineのコンストラクタにLazy(Of IExtension)を注入しようとする

は、私が「いいえ範囲マッチング[要求]インスタンスが要求された範囲から見えない。」を取得します例外は、各IExtensionをインスタンス化しようとしたときます。

私はそれジェクト共有インスタンスに、その後HttpRequestScopedインスタンスとを作成することができますどのように?

でしょう、それ(Requestに、したがって、注入EngineRequestFactoryの工場でそれを設定することをお勧めみなされる?

役に立ちましたか?

解決

により、あなたがすることはできません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>());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top