0

これは、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 のインスタンスが解決されることはありません。

しかし、モジュールや povider を使用せず、カーネルの作成時にバインドすると、すべてがうまく機能します。以下の作品

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

モジュールとプロバイダーの同じ配置は、Ninject2.x バージョンでも正常に機能します。Ninject V3.0 について何か違う点がありますか?

ありがとう

4

1 に答える 1

0

モジュールを StandardKernel に渡して、それを使用することを認識してみてください。

using (IKernel kernel = new StandardKernel(new LoggerModule()))
{
    ILogger logger = kernel.Get<OneOfMyLoggers>();   
}
于 2012-06-19T13:17:07.110 に答える