(WCF)プロジェクトにninjectモジュールをロードしていて、カスタムプロバイダーを使用してモジュールにlog4netを接続したいと考えています。私がプロバイダーを使用している理由は、GetLoggerメソッドがインジェクションが行われているクラスを通過する必要があるためです。これがこれを行う方法ではない場合は、私に知らせてください。私はNinjectを初めて使用します。(Context.getType()は正しくありませんが、これを行うのに問題があります。)
主な問題は、コンストラクターの実行後にクラスのILog変数が初期化されることですが、コンストラクターでロギングを使用できるようにしたいです。また、Ninjectを使用してコンストラクターを呼び出し、そのパラメーターを具象クラスにバインドしています。
Bind<IBroker>().To<Broker>(); // constructor
Bind<ILog>().ToProvider(new log4netILogProvider()) // property
private class log4netILogProvider : Ninject.Activation.Provider<ILog>
{
protected override ILog CreateInstance(IContext context)
{
return LogManager.GetLogger(context.getType());
}
}
すべての助けに感謝します。