Ninject和asp.net MVC4

9 c# ninject asp.net-mvc-4

我有一个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
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于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());
Run Code Online (Sandbox Code Playgroud)

"ServiceResolver"和".SetResolver"都未解析.我需要添加哪些参考才能启用这些参考?另外,如果可能的话,你可以指点我一个教程,向我展示如何让ninject在MVC4中工作,而无需安装nuget包ninject.mvc3吗?我问,因为我不希望在我的应用程序中安装任何专门为MVC3编写的软件包,以避免在更新这些nuget软件包时发生故障.

编辑:我应该补充一点,我使用的是Visual Studio 2012和.Net 4.5

Eri*_*sch 14

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