来自aPress的pro asp.net mvc 3书中的一些错误

时间:2011-08-25 13:52:36

标签: c# asp.net-mvc ninject

我正在读这本书而我无论我尝试什么我都无法使这个例子正常运行,因为它使用了我从未听过的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

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你要么

  1. System.Web.Mvc.DefaultControllerFactory继承您的类,其中包括GetControllerInstance以覆盖
  2. 抓住ninject.web.mvc already implements NinjectControllerFactory给你。{  (虽然看起来他们对MVC3使用不同的机制?)