我有一个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文件即可添加绑定.
| 归档时间: |
|
| 查看次数: |
10914 次 |
| 最近记录: |