ninject如何在Asp.net MVC中执行依赖注入

时间:2011-04-27 15:46:23

标签: asp.net-mvc dependency-injection ninject

我通过apress学习Pro asp.net mvc2这本书,在书中作者使用ninject进行依赖注入。 他继承了默认的控制工厂:

public class NinjectControllerFactory:DefaultControllerFactory

然后覆盖:GetControllerInstance

我有两个问题。

  1. DefaultControllerFactory如何知道要加载哪个控制器?我假设他使用路由表,然后用反射加载它。我对么 ?

  2. 以及ninject如何知道这一点,我写的唯一一行是:

    private IKernel kernel = new StandardKernel(); return(IController)kernel.Get(controllerType);

  3. Ninject可能不知道我的路由表以及他应该加载哪个控件。 那么他怎么知道的?

    PS。 我使用常规ninject,而不是为MVC创建的某些特定版本(我相信他们也在他们的网站上)

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

NinjectControllerFactory.GetControllerInstance由MVC调用。这意味着它是MVC,它评估处理请求所需的控制器类型,并从路由表中获取它。

如果您想使用此功能,我建议使用https://github.com/ninject/ninject.web.mvc它将节省您的时间和工作,因为它与Ninject一起维护。否则,您必须自己更新到新的Ninject版本。