How does Ninject create controller in ASP.NET MVC?

后端 未结 3 1401
名媛妹妹
名媛妹妹 2021-01-02 04:05

This may be stupid question, but I am looking at Ninject sources and don\'t see NInject registering its own controller factory. I also don\'t see any IControllerFactor

3条回答
  •  执念已碎
    2021-01-02 04:49

    1. Lets say we are looking for "/Task/Index".
    2. Ninject MVC applications use now DefaultControllerFactory, the same as non-Ninject applications.
    3. DefaultControllerFactory finds type for controller (TaskController).
    4. DefaultControllerFactory has internal class called DefaultControllerActivator. DefaultControllerActivator has method called Create, which returns controller instance. DefaultControllerFactory asks DefaultControllerActivator for TaskController type instance.
    5. DefaultControllerActivator.Create uses IDependencyResolver. This is where Ninject comes in. Since Ninject implements its own resolver and sets it at the start of application, he gets request for TaskController instance.
    6. The rest is easy. Ninject finds constructor for this type, injects parameters, returns controller instance.

提交回复
热议问题