加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET mvc 4中使用Ninject时是否需要控制器工厂

发布时间:2020-12-16 04:12:47 所属栏目:asp.Net 来源:网络整理
导读:在使用Ninject和asp.net mvc 4时,我无法通过谷歌的.net提供大量文档. 首先,我想知道在asp.net中是否需要Controller工厂. 另外,构造函数注入真的是我们可以用MVC 4进行依赖注入的唯一方法,因为当我将它们与我的控制器一起使用时,属性注入和方法注入似乎不起作
在使用Ninject和asp.net mvc 4时,我无法通过谷歌的.net提供大量文档.

首先,我想知道在asp.net中是否需要Controller工厂.

另外,构造函数注入真的是我们可以用MVC 4进行依赖注入的唯一方法,因为当我将它们与我的控制器一起使用时,属性注入和方法注入似乎不起作用

解决方法

我不是Ninject的专家,但就我所知,我只使用它将我的DataSource接口和我的EfDb类链接到我的应用程序的其余部分.

如果您需要一本包含Ninject构建的Real Application的好书,请尝试:
Pro ASP.NET MVC 3 Framework,Third Edition

要么

Pro Asp.Net Mvc 4

我通常关心的代码行很少

public class NinjectControllerFactory : DefaultControllerFactory
{
    private IKernel ninjectKernel;

    public NinjectControllerFactory()
    {
        ninjectKernel = new StandardKernel();
        AddBindings();
    }

    protected override IController GetControllerInstance(RequestContext requestContext,Type controllerType)
    {
        return controllerType == null
                   ? null
                   : (IController) ninjectKernel.Get(controllerType);
    }

    private void AddBindings()
    {
        ninjectKernel.Bind<IDataSource>().To<EfDb>();
    }
}

然后在Global.asax.cs中注册NinjectControllerFactory:

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

如您所见,此类使用方法注入使用私有void AddBindings().如果您遵循测试驱动开发(TDD),这将非常容易

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读