0

我正在尝试在基于 Jason 答案的 asp.net webforms 应用程序中使用 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,这意味着没有发生注入。

4

1 回答 1

2

我得到它的工作我删除了 global.asax 文件,因为我不需要并添加 NinjectWebCommon.cs 删除了 ninject 的引用并从 nuget (Ninject - Ninject.Web)再次添加它们并在 App_Start/NinjectWebCommon.cs 中添加了我的绑定

private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IProductRepository>().To<EFProductRepository>();
        }  

在我使用的页面中

[Inject]
        public IProductRepository Repository { get; set; }

并为我工作。

于 2013-03-25T12:17:31.753 回答