我正在我的(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());
}
}
感谢所有帮助。