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

Posted 属性

篇首语:临文乍了了,彻卷兀若无。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:从Unity来认识IoC(1)[1]相关的知识,希望对你有一定的参考价值。

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

     IoC的应用

  所谓控制反转(Inversion of Control IoC) 简单地说 就是应用本身不负责依赖对象的创建和维护 而交给一个外部容器来负责 这样控制权就由应用转移到了外部IoC容器 控制权就实现了所谓的反转 比如在类型A中需要使用类型B的实例 而B实例的创建并不由A来负责 而是通过外部容器来创建 通过IoC的方式实现针对目标Controller的激活具有重要的意义

     从Unity来认识IoC( )

  有时又将IoC称为依赖注入(Dependency Injection DI) 所谓依赖注入 就是由外部容器在运行时动态地将依赖的对象注入到组件之中 Martin Fowler在那篇著名的文章Inversion of Control Containers and the Dependency Injection pattern中将具体的依赖注入划分为三种形式 即构造器注入 属性(设置)注入和接口注入 而我个人习惯将其划分为一种(类型)匹配和三种注入

  类型匹配(Type Mapping) 虽然我们通过接口(或者抽象类)来进行服务调用 但是服务本身还是实现在某个具体的服务类型中 这就需要某个类型注册机制来解决服务接口和服务类型之间的匹配关系

  构造器注入(Constructor Injection) IoC容器会智能地选择和调用适合的构造函数以创建依赖的对象 如果被选择的构造函数具有相应的参数 IoC容器在调用构造函数之前解析注册的依赖关系并自行获得相应参数对象

  属性注入(Property Injection) 如果需要使用到被依赖对象的某个属性 在被依赖对象被创建之后 IoC容器会自动初始化该属性

  方法注入(Method Injection) 如果被依赖对象需要调用某个方法进行相应的初始化 在该对象创建之后 IoC容器会自动调用该方法

  开源社区具有很有流行的IoC框架 如Castle Windsor Unity Spring NET StructureMap和Ninject等 Unity是微软Patterns& Practices部门开发的一个轻量级的IoC框架 该项目在Codeplex上的地址为//unity codeplex / 我们可以下载相应的安装包和开发文档 在本书出版之时 Unity的最新版本为 出于篇幅的限制 我们不可能对Unity进行详细的讨论 但是为了让读者了解IoC在Unity中的实现 我们写了一个简单的程序

  创建一个控制台程序 定义如下几个接口(IA IB IC和ID)和它们各自的实现类(A B C D) 在类型A中定义了B C和D 个属性 其类型分别为接口IB IC和ID 属性B在函数中被初始化 意味着它会以构造器注入的方式被初始化 属性C上应用了Microsoft Practices Unity DependencyAttribute特性 意味着这是一个需要以属性注入方式被初始化的依赖属性 属性D则通过方法Initialize初始化 该方法上应用了特性Microsoft Practices Unity InjectionMethodAttribute 意味着这是一个注入方法 它会在A对象被IoC容器创建的时候会被自动调用

  namespace UnityDemo

  

  public interface IA

  public interface IB

  public interface IC

  public interface ID

  public class A : IA

  

  public IB B get; set;

  [Dependency]

  public IC C get; set;

  public ID D get; set;

  public A(IB b)

  

  this B = b;

  

  [InjectionMethod]

  public void Initialize(ID d)

  

  this D = d;

  

  

  public class B: IB

  public class C: IC

  public class D: ID

  

  然后为该应用添加一个配置文件 并定义如下一段关于Unity的配置 这段配置定义了一个名称为defaultContainer的Unity容器 并在其中完成了上面定义的接口和对应实现类之间映射的类型匹配

cha138/Article/program/net/201311/16077

相关参考

知识大全 ASP.NET MVC 4框架揭秘

ASP.NETMVC4框架揭秘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章ASPNET+

知识大全 ASP.NET MVC 4框架揭秘:默认实现

ASP.NETMVC4框架揭秘:默认实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 ASP.NET MVC 4框架揭秘:总体设计

ASP.NETMVC4框架揭秘:总体设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章&n

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]

ASP.NETMVC4框架揭秘:ControllerFactory[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:Controller(1)

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

知识大全 ASP.NET MVC 4框架揭秘:Controller(3)

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

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[2]

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

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[1]

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