asp.net-mvc - Ninject 如何在 ASP.NET MVC 中创建 Controller ?

标签 asp.net-mvc asp.net-mvc-3 ninject ninject-2 ninject.web.mvc

这可能是个愚蠢的问题,但我正在查看 Ninject 源代码,但没有看到 NInject 注册自己的 Controller 工厂。我在 Ninject.Web.Mvc 程序集中也没有看到任何 IControllerFactory 类。我错过了什么吗? Ninject 如何创建 Controller 并将参数注入(inject)构造函数?

最佳答案

  1. 假设我们正在寻找“/Task/Index”。
  2. Ninject MVC 应用程序现在使用 DefaultControllerFactory,与非 Ninject 应用程序相同。
  3. DefaultControllerFactory 查找 Controller (TaskController) 的类型。
  4. DefaultControllerFactory 有一个名为 DefaultControllerActivator 的内部类。 DefaultControllerActivator 有一个名为 Create 的方法,它返回 Controller 实例。 DefaultControllerFactoryDefaultControllerActivator 请求 TaskController 类型实例。
  5. DefaultControllerActivator.Create 使用IDependencyResolver。这就是 Ninject 发挥作用的地方。由于 Ninject 实现了自己的解析器并在应用程序启动时设置它,因此他收到对 TaskController 实例的请求。
  6. 剩下的就很简单了。 Ninject 找到该类型的构造函数,注入(inject)参数,返回 Controller 实例。

关于asp.net-mvc - Ninject 如何在 ASP.NET MVC 中创建 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5018810/

相关文章:

c# - JSON 对象不序列化大数据

c# - 在 MVC4 中设置默认 Controller

c# - 如何让 MVC3 调用具有不同名称的 View ?

asp.net-mvc - ASP.NET MVC 3 : RouteExistingFiles = true seems to have no effect

asp.net-mvc-3 - 大量使用 ViewBag

c# - 在 mvc 3 中为嵌套类的 CRUD 创建模型/ View

ajax - 使用 knockout 绑定(bind) json 数据

Quartz.Net 作业中使用的 DBContext 的 Ninject 作用域

c# - 在 Ninject 2 依赖关系图中进行特定于上下文和参数的注入(inject)

vb.net - 依赖注入(inject) - 我不明白!