【Github源码】本文重点要说的是如何通过引入Wukong第三方包让自己的系统能够拥有IOC容器能力,但在具体讲解步骤之前,还是想先简单的介绍一下什么是IOC以及它存在的意义;同时也就能清楚Wukong能为大家解决哪些问题 。
一、IOC的用途和意义??IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”;也有的地方叫做“依赖注入(Dependency Injection)” 。?作者的理解IOC是一种基于工厂模式的更高级的对象获取模式;使用该方法,可以将通过new方法创建对象实例的传统方式;替换为通过IOC容器获取对象实例 。通过使用IOC容器消除了对象之间的依赖强耦合,实现了对象之间的解耦,使得系统更灵活、更易扩展和维护 。
1. 传统的对象获取方式

文章插图
传统方式必须在项目中显示引入对象所在程序集,同时在需要对象的位置进行显示创建 。
Person p = new Person();p.SetName("张三");
2. IOC容器获取对象方式
文章插图
?而IOC方式,项目只需要显示引入Wukong依赖包,其他需要的对象通过IOC容器进行获取;IOC和各个对象之间完全是弱引用,只会在IOC获取真实对象实例时,才会去相应位置搜索对象定义并创建实例 。
dynamic p = Wukong.GetObject("CodeM.Test.Person");p.SetName("张三");
二、如何引入Wukong依赖1. Package ManagerInstall-Package Wukong -Version 2.0.5
2. .NET CLIdotnet add package Wukong --version 2.0.5
3. PackageReference<PackageReference Include="Wukong" Version="2.0.5" />
4. Paket CLIpaket add Wukong --version 2.0.5
三、如何通过Wukong获取对象实例Wukong提供了两种获取对象的方式,一种是通过类全名称,二是通过配置方式获取 。1. 通过类全名称获取对象实例?Wukong提供了GetObject、GetObject、GetSingleObject、GetSingleObject四个方法,用于支持泛型、单例 。
2. 通过配置方式获取对象实例?通过配置方式更加灵活,系统扩展和维护无需重新编译;同时能够在配置时,为对象属性进行赋值和初始化操作;并且支持配置对象间的依赖引用 。
dynamic person = Wukong.GetObjectById("person");
?同样,Wukong也为通过配置方式获取对象实例提供了GetObjectById、GetObjectById、GetSingleObjectById、GetSingleObjectById四个不同的方法,使用时可根据不同场景自由选择 。四、对象配置文件定义?对象配置文件采用XML格式,支持对象构造方法定义、属性赋值定义;构造参数和属性值类型支持字符串、数值、布尔、日期时间等常用简单类型,以及枚举 、列表、数组、对象引用等复杂类型 。
<?xml version="1.0" encoding="utf-8" ?><objects> <object id="father" class="TestExample.Person"><constructor-arg>"张三"</constructor-arg><constructor-arg type="TestExample.Sex">Male</constructor-arg> </object> <object id="mother" class="TestExample.Person"><constructor-arg>"李四"</constructor-arg><constructor-arg type="TestExample.Sex">Female</constructor-arg> </object> <object id="intParents" class="TestExample.Person"><constructor-arg ref="father"></constructor-arg><constructor-arg ref="mother"></constructor-arg> </object></objects>
更多详细对象配置文件的规则请查看完整Github说明文档五、通过Wukong获取对象是如何找到对象所在程序集的?前面讲到传统方式使得对象之间依赖性太强,耦合严重;造成这个问题的原因有两个:一是在每个使用对象的位置都需要通过new方法创建实例;二是所有使用到的对象都必须在项目中引用对象所在的包 。
经验总结扩展阅读
- 怎样让屁股变小变平
- 在爱情中让人很心疼的星座
- 相爱相杀的状态会让这些星座对爱保有激情
- 迷你世界怎么让做出来的车冒火(迷你世界怎么做能放出来的车)
- 甜甜的,总让人感觉恋爱很美好的四大星座
- 青海湖的鱼为什么不让捕捞
- 华为qq怎么让群里看不到资料
- 每天坚持“八搓”让肌肤年轻
- 关于老师关心的句子
- obd读取不到数据怎么办