0

在我的 global.asax 文件中,我在接口和类之间建立了依赖关系。注入始终有效,并且设置没有问题。

在模型绑定器中,在同一解决方案中,我试图将具体类映射到该接口

IKernel kernel = new StandardKernel();
var samurai = kernel.Get<Samurai>();

由于某种原因,这不起作用,我收到一条错误消息,说“对象初始化为空”或类似的东西。据我了解,这是有道理的,因为我刚刚创建的这个内核是一个新对象,未链接到 global.asax 中创建的对象。我如何获得 global.asax 中的那个,或者我做错了什么?

4

1 回答 1

1

在 global.asax.cs 中,我为这种情况使用了静态变量。

protected override IKernel CreateKernel()
{
    return NinjectKernel;    
}

static IKernel _kernel;
public static IKernel NinjectKernel
{
  get
  {
      if (_kernel == null)
      {
         _kernel = new StandardKernel();
         //Configured bindings for interfaces and classes
      }
      return _kernel;
   }
}

而且我认为您正在尝试获取对接口的引用,即 ISamurai,它又引用了实际的对象 Samurai。

var samurai = NinjectKernel.Get<ISamurai>()
于 2012-10-31T17:30:14.430 回答