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

c# – Ninject和asp.net MVC4

发布时间:2020-12-15 04:09:33 所属栏目:百科 来源:网络整理
导读:我有一个MVC3应用程序,我想要移植到MVC4.我正在使用Ninject进行依赖注入.使用Nuget,我在项目中添加了“Ninject”,并创建了一个控制器工厂,如下所示 public class NinjectControllerFactory : DefaultControllerFactory{ private IKernel ninjectKernel; publ
我有一个MVC3应用程序,我想要移植到MVC4.我正在使用Ninject进行依赖注入.使用Nuget,我在项目中添加了“Ninject”,并创建了一个控制器工厂,如下所示
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()
    {
        //Add ninject bindings here
    }
}

这对MVC3很好,但是在MVC4中却发生了变化.我做了一些挖掘,发现这个链接,解释如何让Ninject工作的MVC4

http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx

但是,我在上述链接中编写代码时遇到麻烦.具体来说,我应该在web.common文件的Start()方法中放置的代码给我未解决的命名空间错误

GlobalConfiguration.Configuration.ServiceResolver
  .SetResolver(DependencyResolver.Current.ToServiceResolver());

“ServiceResolver”和“.SetResolver”都未解决.我需要添加什么参考以启用这些?另外,如果可能,你可以指出一个教程,告诉我如何让ninject在MVC4中工作,而无需安装nuget软件包ninject.mvc3?我问,因为我不想在我的应用程序中安装任何为MVC3编写的软件包,专门用于避免这些nuget软件包更新时出现故障.

编辑:我应该补充说我正在使用Visual studio 2012和.Net 4.5

解决方法

菲尔的文章是关于使用Ninject与WebAPI.你是这个意思吗?您不需要这样做用于正常的MVC注入.此外,您应该使用MVC4的Ninject.MVC3 NuGet软件包(是的,我知道它说MVC3,但它仍然可以正常工作,因为NuGet设置组装版本重定向,使一切正常工作),这设置了所有的东西,需要一个控制器工厂.只需编辑NinjectWebCommon.cs文件即可添加绑定.

(编辑:李大同)

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

    推荐文章
      热点阅读