这可能是一个愚蠢的问题,但我正在查看 Ninject 源代码,但没有看到 NInject 注册自己的控制器工厂。我也没有看到任何IControllerFactory
上课于Ninject.Web.Mvc
集会。我错过了什么吗? Ninject 如何创建控制器并将参数注入构造函数?
- 假设我们正在寻找“/Task/Index”。
- Ninject MVC 应用程序现在使用
DefaultControllerFactory
,与非 Ninject 应用程序相同。
-
DefaultControllerFactory
查找控制器的类型(TaskController
).
-
DefaultControllerFactory
有内部类称为DefaultControllerActivator
. DefaultControllerActivator
有方法调用Create
,它返回控制器实例。DefaultControllerFactory
asks DefaultControllerActivator
for TaskController
类型实例。
-
DefaultControllerActivator.Create
uses IDependencyResolver
。这是哪里Ninject
进来了。自从Ninject
实现自己的解析器并在应用程序启动时设置它,他收到请求TaskController
实例。
- 剩下的就很容易了。
Ninject
找到该类型的构造函数,注入参数,返回控制器实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)