NinjectModule和IProvider无法解析类型

时间:2012-06-19 13:11:27

标签: ninject

这是不起作用的设置 使用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的不同之处吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试将模块传递给StandardKernel,以便它知道使用它:

using (IKernel kernel = new StandardKernel(new LoggerModule()))
{
    ILogger logger = kernel.Get<OneOfMyLoggers>();   
}