我通过apress学习Pro asp.net mvc2这本书,在书中作者使用ninject进行依赖注入 . 他继承了默认控件工厂:
public class NinjectControllerFactory:DefaultControllerFactory
然后覆盖:GetControllerInstance
我有两个问题 .
-
DefaultControllerFactory如何知道要加载哪个控制器?我假设他使用路由表,然后用反射加载它 . 我对么 ?
-
以及ninject如何知道这一点,我写的唯一一行是:
private IKernel kernel = new StandardKernel(); return(IController)kernel.Get(controllerType);
Ninject不可能知道我的路线表以及他应该加载哪个控件..所以他怎么知道?
PS . 我使用常规ninject,而不是为MVC创建的某些特定版本(我相信他们也在他们的网站上)
2 回答
这是关于mvc3但是关于ninject和mvc的好文章 . http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-the-New-Dependency-Injection-Support-Part1.aspx
NinjectControllerFactory.GetControllerInstance由MVC调用 . 这意味着它是MVC,它评估处理请求所需的控制器类型,并从路由表中获取它 .
如果你想使用它我建议使用https://github.com/ninject/ninject.web.mvc它将节省你的时间和工作,因为它与Ninject一起维护 . 否则,您必须自己更新到新的Ninject版本 .