0
votes

Here is the set up that is not working Using 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();
}
}

In my application wherever I inject instance of ILogger (using constructor or property injection, just does matter) I never get instance of ILogger resolved.

But If do not use module and/or povider, and bind when kernel is created, everything works like a charm. The following works

public class MyDiResolver()
{
  public MyDiResolver()
{
  MyKernel = new StandardKernel();
  MyKernel.Bind<ILogger>().To<OneOfMyLoggers>();
}
}

The same arrangement of modules and providers works fine in Ninject2.x version. Is there something different about Ninject V3.0 that I am missing?

Thanks

1

1 Answers

0
votes

Try passing the module into the StandardKernel so it knows to use it:

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