在我的global.asax文件中,我在接口和类之间建立了依赖关系。注射始终有效,设置没有问题。
在模型绑定器中,在同一个解决方案中,我试图将具体类映射到该接口,因此
IKernel kernel = new StandardKernel();
var samurai = kernel.Get<Samurai>();
由于某些原因,这不起作用,我得到一个错误,说“对象初始化为null”或者那种效果。据我所知,这是有道理的,因为我刚刚创建的这个内核是一个没有链接到global.asax中创建的对象的新对象。我如何获得global.asax中的那个或者我做错了什么?
答案 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>()