我正在尝试在基于Jason answer 的asp.net网络表单应用程序中使用ninject版本3
如何在asp.net Web窗体上实现Ninject或DI?
但它不起作用?
public class Global : NinjectHttpApplication
{
........
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new NinjectWebCommon());
return kernel;
}
}
public class NinjectWebCommon : NinjectModule
{
public override void Load()
{
Bind<IProductRepository>().To<EFProductRepository>();
}
}
当我开始调试时,CreateKernel从未调用过,并且我在页面中得到一个异常NullReferenceException,这意味着没有发生注入。
我完成了工作,因为我不需要删除了global.asax文件,并添加了NinjectWebCommon.cs删除了ninject的引用,并从nuget(ninject-ninject.Web(中再次添加它们在App_Start/NjectWebCommon.cs 中添加了我的绑定
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IProductRepository>().To<EFProductRepository>();
}
在页面中我使用了
[Inject]
public IProductRepository Repository { get; set; }
并为我工作。