这可能是个愚蠢的问题,但我正在查看 Ninject 源代码,但没有看到 NInject 注册自己的 Controller 工厂。我在 Ninject.Web.Mvc
程序集中也没有看到任何 IControllerFactory
类。我错过了什么吗? Ninject 如何创建 Controller 并将参数注入(inject)构造函数?
最佳答案
- 假设我们正在寻找“/Task/Index”。
- Ninject MVC 应用程序现在使用
DefaultControllerFactory
,与非 Ninject 应用程序相同。 DefaultControllerFactory
查找 Controller (TaskController
) 的类型。DefaultControllerFactory
有一个名为DefaultControllerActivator
的内部类。DefaultControllerActivator
有一个名为Create
的方法,它返回 Controller 实例。DefaultControllerFactory
向DefaultControllerActivator
请求TaskController
类型实例。DefaultControllerActivator.Create
使用IDependencyResolver
。这就是Ninject
发挥作用的地方。由于Ninject
实现了自己的解析器并在应用程序启动时设置它,因此他收到对TaskController
实例的请求。- 剩下的就很简单了。
Ninject
找到该类型的构造函数,注入(inject)参数,返回 Controller 实例。
关于asp.net-mvc - Ninject 如何在 ASP.NET MVC 中创建 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5018810/