这是不起作用的设置 使用Ninject V3.0
public class LoggerModule : NinjectModule{
public override void Load()
{
Bind<ILogger>.ToProvider(MyLoggerProvider);
}
}
public class MyLoggerProvider: IProvider<ILogger>
{
public object Create(IContext context){
return new OneOfMyLoggers();
}
}
在我的应用程序中,无论我注入ILogger的实例(使用构造函数或属性注入,只是重要)我都没有得到ILogger的实例解析。
但是如果不使用module和/或povider,并在创建内核时绑定,那么一切都像魅力一样。以下作品
public class MyDiResolver()
{
public MyDiResolver()
{
MyKernel = new StandardKernel();
MyKernel.Bind<ILogger>().To<OneOfMyLoggers>();
}
}
模块和提供程序的相同排列在Ninject2.x版本中运行良好。我错过了Ninject V3.0的不同之处吗?
由于
答案 0 :(得分:0)
尝试将模块传递给StandardKernel,以便它知道使用它:
using (IKernel kernel = new StandardKernel(new LoggerModule()))
{
ILogger logger = kernel.Get<OneOfMyLoggers>();
}