我通过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创建的某些特定版本(我相信他们也在他们的网站上)
答案 0 :(得分:0)
这是关于mvc3但是关于ninject和mvc的好文章。 http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-the-New-Dependency-Injection-Support-Part1.aspx
答案 1 :(得分:0)
NinjectControllerFactory.GetControllerInstance由MVC调用。这意味着它是MVC,它评估处理请求所需的控制器类型,并从路由表中获取它。
如果您想使用此功能,我建议使用https://github.com/ninject/ninject.web.mvc它将节省您的时间和工作,因为它与Ninject一起维护。否则,您必须自己更新到新的Ninject版本。