Ninject让实例无法正常工作

时间:2012-10-31 16:18:21

标签: asp.net-mvc ninject

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

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

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

由于某些原因,这不起作用,我得到一个错误,说“对象初始化为null”或者那种效果。据我所知,这是有道理的,因为我刚刚创建的这个内核是一个没有链接到global.asax中创建的对象的新对象。我如何获得global.asax中的那个或者我做错了什么?

1 个答案:

答案 0 :(得分: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>()