简单的小程序演示Unity的三种依赖注入方式
|
简单的小程序演示Unity的三种依赖注入方式 今天写《WCF技术剖析(卷2)》关于《WCF扩展》一章,举了“如何通过WCF扩展实现与IoC框架(以Unity为例)集成”(《通过自定义ServiceHost实现对WCF的扩展[实例篇]》)的例子。为了展示Unity如何实现几种典型的注入方式(构造器注入、属性注入和方法注入),我写了一个简单的小程序。如果读者对Unity或者IoC没有太多概念,我觉得这个小程序对于你初步地认识它们具有一定的帮助意义。如果你对Unity或者IoC有深入的认识,请忽略本文。[源代码从这里下载] 首先创建一个控制台程序,并添加如下两个基于Unity的程序集被引用:Microsoft.Practices.Unity.dll和Microsoft.Practices.Unity.Configuration.dll。然后定义如下几个接口(IA、IB、IC和ID)和它们各自的实现类(A、B、C、D)。在类型A中定义了3个属性B、C和D,其类型分别为接口IB、IC和ID。其中属性B在构在函数中被初始化;属性C上应用了Microsoft.Practices.Unity.DependencyAttribute特性,意味着这是一个需要以属性注入方式被初始化的依赖属性;属性D则通过方法Initialize初始化,该方法上应用了Microsoft.Practices.Unity.InjectionMethodAttribute,意味着这是一个注入方法会被自动调用。 1: namespace UnityDemo 2: {
3: public interface IA { }
4: public interface IB { }
5: public interface IC { }
6: public interface ID {}
7: 8: public class A : IA 9: {
10: public IB B { get; set; }
11: [Dependency] 12: public IC C { get; set; }
13: public ID D { get; set; }
14: 15: public A(IB b) 16: {
17: this.B = b; 18: } 19: [InjectionMethod] 20: public void Initialize(ID d) 21: {
22: this.D = d; 23: } 24: } 25: public class B: IB{}
26: public class C: IC{}
27: public class D: ID{}
28: } 然后我们为该应用添加一个配置文件,并定义如下一段关于Unity的配置。在这段配置中,定义了一个名称为defaultContainer的Unity容器,并在其中完成了上面定义的接口和对应实现类之间映射的类型匹配。 1: <?xml version="1.0"?>2: <configuration> 3: <configSections> 4: <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> 5: </configSections> 6: <unity> 7: <containers> 8: <container name="defaultContainer"> 9: <register type="UnityDemo.IA,UnityDemo" mapTo="UnityDemo.A,UnityDemo"/> 10: <register type="UnityDemo.IB,UnityDemo" mapTo="UnityDemo.B,UnityDemo"/> 11: <register type="UnityDemo.IC,UnityDemo" mapTo="UnityDemo.C,244)"> 12: <register type="UnityDemo.ID,UnityDemo" mapTo="UnityDemo.D,monospace; font-size:8pt; direction:ltr; background-color:white"> 13: </container> 14: </containers> 15: </unity> 16: </configuration> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
