知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(1)[1]

Posted 类型

篇首语:知识养成了思想,思想同时又在融化知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(1)[1]相关的知识,希望对你有一定的参考价值。

ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(1)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     基于IoC的DependencyResolver( )

  如果在构建DefaultControllerFactory的时候没有显式指定采用ControllerActivator 它默认使用的是一个类型为DefaultControllerActivator的对象 如下面的代码片段所示 这只是一个实现了IControllerActivator接口的私有类型 不能直接通过编程的方式使用它

  private class DefaultControllerActivator : IControllerActivator

  

  public DefaultControllerActivator()

  public DefaultControllerActivator(IDependencyResolver resolver)

  public IController Create(RequestContext requestContext

  Type controllerType)

  

  即使DefaultControllerFactory采用了默认的DefaultControllerActivator 依然可以将IoC引入到Controller的激活系统中 而这就需要进一步了解实现在DefaultControllerActivator的Controller激活逻辑了

  其实DefaultControllerActivator完成对Controller的激活依赖于另一个名为DependencyResolver的对象 DependencyResolver是一个非常重要的组件 可以将其视为ASP NET MVC框架内部使用的IoC容器 它不只是用于针对Controller的激活 框架内部很多组件的提供最终都依赖于它 DependencyResolver实现了具有如下定义的System Web Mvc IDependencyResolver接口 GetService和GetServices方法分别用于根据指定的类型获取单个和所有实例

  public interface IDependencyResolver

  

  object GetService(Type serviceType)

  IEnumerable<object> GetServices(Type serviceType)

  

  整个Web默认使用的DependencyResolver可以通过System Web Mvc Dependency Resolver类型进行注册 如下面的代码片段所示 DependencyResolver类型具有一个静态的Current属性表示当前DependencyResolver 具体对DependencyResolver的注册通过调用静态方法SetResolver来完成 顺便说一下 DependencyResolver类型并没有实现IDependencyResolver接口 并不是真正意义上的DependencyResolver

  public class DependencyResolver

  

  //其他成员

  private static DependencyResolver _instance;

  public void InnerSetResolver(object monServiceLocator)

  public void InnerSetResolver(IDependencyResolver resolver)

  public void InnerSetResolver(Func<Type object> getService

  Func<Type IEnumerable<object》 getServices)

  public static void SetResolver(object monServiceLocator)

  public static void SetResolver(IDependencyResolver resolver)

  public static void SetResolver(Func<Type object> getService

  Func<Type IEnumerable<object》 getServices)

  public static IDependencyResolver Current get;

  public IDependencyResolver InnerCurrent get;

  

  这个被封装的DependencyResolver(指实现了接口IDependencyResolver的某个类型的对象 不是指DependencyResolver类型的对象 对于后者我们会采用 DependencyResolver类型对象 的说法)通过只读属性InnerCurrent表示 而三个InnerSetResolver方法重载用于初始化该属性 静态字段_instance表示当前的DependencyResolver类型对象 静态只读属性Current则表示该对象内部封装的DependencyResolver对象 而它通过三个静态的SetResolver进行初始化

cha138/Article/program/net/201311/16065

相关参考

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(2)

ASP.NETMVC4框架揭秘:基于IoC的DependencyResolver(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(1)[2]

ASP.NETMVC4框架揭秘:基于IoC的DependencyResolver(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(1)[2]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(1)[1]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(1)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[2]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(2)[1]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(3)[1]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(3)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(3)[2]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(3)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:从Unity来认识IoC(2)

ASP.NETMVC4框架揭秘:从Unity来认识IoC(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来