2

我正在查看 Ninject MVC 源代码,生成用于覆盖默认值的控制器工厂的方法被硬编码为仅返回 NinjectControllerFactory,但是由于将其设置为虚拟,因此(在我看来)使用 IControllerFactory 会更有意义.

/// <summary>
/// Creates the controller factory that is used to create the controllers.
/// </summary>
/// <returns>The created controller factory.</returns>
protected virtual NinjectControllerFactory CreateControllerFactory()
{
    return new NinjectControllerFactory(this.Kernel);
}

我喜欢 Ninject,我确信这样做是有原因的,但是目前有一个问题,我需要编写自己的 ControllerFactory 并使用它,但仍宁愿使用 NinjectHttpApplication。我知道我可以从 NinjectControllerFactory 继承,然后重写该方法以返回这个新实例,但我不会使用 Ninject 风格的任何功能,所以它看起来有点味道......

那么它是否有理由不使用 IController 或者这可能会在新版本中进行更改?

4

1 回答 1

1

我假设您指的是 MVC 1.0 或 2.0。MVC 3.0 采用了完全不同的方式。

不,没有理由不返回IControllerFactory. 这很可能只是一个自动重构并且未被识别。另一方面,如果您不使用NinjectControllerFactory几乎没有理由使用扩展。

于 2011-12-07T18:09:13.233 回答