ASP.NET MVC 3引入了DependencyResolver,我看到很多文章有多酷。但是等等......与ControllerFactory方法相比有什么不同?对我来说看起来很相似。
答案 0 :(得分:5)
ServiceLocator被设计为一个抽象层,允许您实现自己的ServiceLocator适配器,该适配器确定如何在应用程序中解析服务。其中一个例子是Windsor Service Locator Adapter。
服务定位器能够根据Brad Wilson解析在服务定位器中注册的控制器:
这是MVC 3的一个新功能.MVC框架(具体来说,是 DefaultControllerFactory类已更新以尝试创建 具有已注册服务定位器的所有控制器实例。
服务定位器也可以在整个框架中使用,以解决ASP.NET MVC框架使用的许多其他依赖项,如ActionFilters,ResultHandlers甚至ViewEngines所需的依赖项。
如果您使控制器的所有实例都可用,对于标准应用程序,您不太可能需要自定义控制器工厂。
但是,如果您需要在控制器实例化之前,期间或之后执行某些特定操作,则可以使用controllerfactory在返回以供框架的其余部分使用之前处理这些特定实现。