我正在阅读这本书,但无论我尝试什么,我都无法使这个示例正常运行,因为它使用了我以前从未听说过的 ninject,如果有人可以帮助我运行它,我将不胜感激
这本书的作者说我应该添加新文件夹(基础结构)并添加新的.cs文件(NinjectControllerFactory)到项目中,然后向其中添加以下代码
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
//problem with override
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController) ninjectKernel.Get(controllerType);
}
如果我尝试调试它,我会遇到一个问题,因为 VS 说我无法重写该方法。我简单地删除了覆盖并尝试再次运行它,但是我再次遇到这行代码的问题:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
我必须添加 global.aspx
-> Application_Start()
方法,但我遇到了一个问题,因为 VS 说我必须将它转换为 IControllerFactory
所以我把它修改为
ControllerBuilder.Current
.SetControllerFactory(new NinjectControllerFactory() as IControllerFactory);
但现在我在那行得到了 ArgumentNullException
。
有人知道我该如何解决这个问题吗?
最佳答案
你要么想要
- 从System.Web.Mvc.DefaultControllerFactory继承你的类其中包括要覆盖的 GetControllerInstance
- 获取ninject.web.mvc哪个already implements NinjectControllerFactory为你
(尽管看起来他们对 MVC3 使用了不同的机制?)
关于c# - aPress 的 pro asp.net mvc 3 书中的一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191574/