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

Posted 类型

篇首语:人生必须的知识就是引人向光明方面的明灯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(2)相关的知识,希望对你有一定的参考价值。

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

     基于IoC的DependencyResolver( )

  上面介绍的类型DefaultControllerFactory IControllerActivator DefaultControllerActivator IDependencyResolver DefaultDependencyResolver和DependencyResolver之前的关系基本上可以通过如图 所示的类图来体现

  图   DefaultControllerFactory + ControllerActivator + DependencyResolver

  实例演示 创建基于Ninject的DependencyResolver(S )

  通过前面的介绍我们知道 当调用构造函数创建一个DefaultControllerFactory的时候 如果调用的时候默认无参构造函数 后者将作为参数的ControllerActivator对象设置为Null 那么默认请求用于激活Controller实例的是通过DependencyResolver类型的静态属性Current表示的DependencyResolver对象 换言之 我们可以通过自定义DependencyResolver的方式来实现基于IoC的Controller激活

  同样是采用Ninject 我们定义了一个具有如下定义的NinjectDependencyResolver 与上面定义的NinjectControllerActivator类似 NinjectDependencyResolver具有一个IKernel类型的只读属性Kernel 该属性在构造函数中被初始化为一个StandardKernel对象 对于实现的GetService和GetServices方法 直接调用Kernel的TryGet和GetAll返回指定类型的实例和实例列表 为了方便进行类型映射 我们定义了泛型的Register<TFrom TTo>方法

  public class NinjectDependencyResolver : IDependencyResolver

  

  public IKernel Kernel get; private set;

  public NinjectDependencyResolver()

  

  this Kernel = new StandardKernel()

  

  public void Register<TFrom TTo>() where TTo: TFrom

  

  this Kernel Bind<TFrom>() To<TTo>()

  

  public object GetService(Type serviceType)

  

  return this Kernel TryGet(serviceType)

  

  public IEnumerable<object> GetServices(Type serviceType)

  

  return this Kernel GetAll(serviceType)

  

  

  我们只需要创建一个自定义的NinjectDependencyResolver对象并将其作为当前的DependencyResolver即可 如下面的代码片段所示 我们创建了一个NinjectDependencyResolver对象并注册了IEmployeeRepository和EmployeeRepository之间的映射关系 然后调用DependencyResolver的静态方法SetResolver将创建的NinjectDependencyResolver注册为当前的DependencyResolver对象 再次运行我们的程序 依然会得到如图 所示的效果

  public class MvcApplication : System Web HttpApplication

  

  //其他成员

  protected void Application_Start()

  

  //其他操作

  NinjectDependencyResolver dependencyResolver =

  new NinjectDependencyResolver()

  dependencyResolver Register<IEmployeeRepository EmployeeRepository>()

  DependencyResolver SetResolver(dependencyResolver)

  

  

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

cha138/Article/program/net/201311/16064

相关参考

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

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

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

ASP.NETMVC4框架揭秘:基于IoC的DependencyResolver(1)[1]  以下文字资料是由(全榜网网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)小编为大家搜集整理后发布的内容,让我们赶快一起来