【发布时间】:2010-11-27 09:35:54
【问题描述】:
我正在我的 (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());
}
}
感谢所有帮助。
【问题讨论】:
-
context.getType() 应该是 context.Request.Target.Member.ReflectedType 顺便说一句。
标签: module ioc-container ninject ninject-2