c# - aPress 的 pro asp.net mvc 3 书中的一些错误

标签 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. System.Web.Mvc.DefaultControllerFactory继承你的类其中包括要覆盖的 GetControllerInstance
  2. 获取ninject.web.mvc哪个already implements NinjectControllerFactory为你
    (尽管看起来他们对 MVC3 使用了不同的机制?)

关于c# - aPress 的 pro asp.net mvc 3 书中的一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191574/

相关文章:

c# - MVC3 DropDownListFor - 一个简单的例子?

c# - MSBuild 中出现错误 CS0840,但 VS2015 中没有错误

c# - 如何将谓词定义为函数参数

asp.net-mvc - 如何在 Winforms 中使用数据注释验证器?

c# - 保持简单的成员资格 OAuth session 事件

c#-4.0 - 无法获取 Integration 类 ninject 的默认构造函数

c# - 无法从用法 mvc3 中推断出类型参数

c# - Application_BeginRequest 用法

c# - 使用 Ninject 注入(inject)整数

mocking - 如何使用Ninject.MockingKernel?