1
我是MVC新手。我遵循Steve Sanderson的MVC书籍来创建一个示例MVC项目。在该项目中,ninject被用来实现一个自定义的ControllerFactory。我不理解控制器类可以在没有任何事先绑定语句的情况下在ControllerFactory中解析的部分。内核对象是如何在第一个地方获得控制器信息的?Ninject如何解析MVC中的控制器?
非常感谢
安迪
我是MVC新手。我遵循Steve Sanderson的MVC书籍来创建一个示例MVC项目。在该项目中,ninject被用来实现一个自定义的ControllerFactory。我不理解控制器类可以在没有任何事先绑定语句的情况下在ControllerFactory中解析的部分。内核对象是如何在第一个地方获得控制器信息的?Ninject如何解析MVC中的控制器?
非常感谢
安迪
最有可能的,他创建了一个子类的DefaultControllerFactory,这表示在默认情况下注册的控制器工厂。从MSDN注意到:这个类为想要对控制器创建仅做微小更改的开发人员提供了一个方便的基类。因此可以覆盖GetControllerInstance方法,并使用Ninject根据控制器类型创建控制器。
但是,当前控制器工厂必须使用SetControllerFactory在Global.asax文件中注册,特别是在Application_Start()中,将子类类型传入类型构造函数。所以这将有效地告诉MVC应该使用自定义控制器类来创建控制器而不是默认的MVC控制器工厂。
in mvc 3首选的方法是创建一个自定义的依赖关系解析器。它可以实现比控制器工厂更深的集成,并且您可以构建的不仅仅是控制器,诸如modelbinders,viewengines,filterproviders等...... –