Asp.net-Mvc

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

  • January 15, 2013

這可能是個愚蠢的問題,但我正在查看 Ninject 來源,並沒有看到 NInject 註冊了自己的控制器工廠。我也沒有在彙編中看到任何IControllerFactory課程。Ninject.Web.Mvc我錯過了什麼嗎?Ninject 如何創建控制器並將參數注入建構子?

  1. 假設我們正在尋找“/Task/Index”。
  2. 現在使用 Ninject MVC 應用程序DefaultControllerFactory,與非 Ninject 應用程序相同。
  3. DefaultControllerFactory查找控制器 ( TaskController) 的類型。
  4. DefaultControllerFactory有內部類稱為DefaultControllerActivator. DefaultControllerActivator有方法呼叫Create,它返回控制器實例。DefaultControllerFactory要求類型實例DefaultControllerActivatorTaskController
  5. DefaultControllerActivator.Create使用IDependencyResolver. 這就是Ninject進來的地方。由於Ninject實現了自己的解析器並在應用程序開始時設置它,因此他得到了請求TaskController
  6. 其餘的很容易。Ninject找到這種類型的建構子,注入參數,返回控制器實例。

引用自:https://stackoverflow.com/questions/5018810