私はIoCコンテナとしてSimple Injectorを使用しています。私は実行スコープの存在に基づいて私のクラスのロガーに注入したいと思います。デフォルトのロガー(シングルトン)と私のコンテキストに基づくものがなければなりません。ライフスタイルsimpleinjectorに基づいて登録を実装
container.RegisterConditional(typeof(ILogger),
x => typeof(NContextLogger<>).MakeGenericType(x.Consumer.ImplementationType),
Lifestyle.Scoped,
x => container.GetCurrentExecutionContextScope() != null);
container.RegisterConditional(typeof(ILogger),
x => typeof(NLogger<>).MakeGenericType(x.Consumer.ImplementationType),
Lifestyle.Singleton,
x => container.GetCurrentExecutionContextScope() == null);
問題はNContextLogger<>
の任意のインスタンスを作成すると次のとおりです。
は、私はすでにこのような何かを試してみました。シングルトンのNLogger<>
を作成すると、simpleinjectorはNContextLogger
のインスタンスを作成しようとしていないためです。
私は、このAを見つけると言わなければなりませんかなり奇妙な要件。アクティブな実行コンテキストスコープのコンテキスト外のオブジェクトを解決したいのはなぜですか?おかげさまで – Steven