如何在asp.net Web窗体中使用Ninject v3



我正在尝试在基于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; }

并为我工作。

相关内容

  • 没有找到相关文章

最新更新