Ninject如何在ASP.NET MVC中创建控制器?

Luk*_*Led 11 asp.net-mvc ninject ninject-2 ninject.web.mvc asp.net-mvc-3

这可能是一个愚蠢的问题,但我正在寻找Ninject来源,并没有看到NInject注册自己的控制器工厂.我也没有IControllerFactoryNinject.Web.Mvc集会中看到任何课程.我错过了什么吗?Ninject如何创建控制器并将参数注入构造函数?

Luk*_*Led 13

  1. 让我们说我们正在寻找"/任务/指数".
  2. Ninject MVC应用程序现在使用DefaultControllerFactory,与非Ninject应用程序相同.
  3. DefaultControllerFactory查找controller(TaskController)的类型.
  4. DefaultControllerFactory有内部类叫DefaultControllerActivator.DefaultControllerActivator有一个方法调用Create,它返回控制器实例.DefaultControllerFactory要求DefaultControllerActivatorTaskController类型实例.
  5. DefaultControllerActivator.Create用途IDependencyResolver.这就是它的Ninject用武之地.由于Ninject实现了自己的解析器并在应用程序开始时设置它,因此他获得了请求TaskController.
  6. 其余的很容易.Ninject找到此类型的构造函数,注入参数,返回控制器实例.