IOC是Galbanum在08年推出的最后一个项目了,主要是模仿spring.net的IOC容器,但是spring.net不同的是,在使用的时候,只要在web.config或者app.config中只要配置对象映射xml文件的地方,例:
源程序下载地址:http://download.youkuaiyun.com/source/897222
- configuration>
- <configSections>
- <sectionGroup name="Galbanum">
- <section name="XmlPath" type="Ioc.XmlDocumentHandler,Ioc"/>
- </sectionGroup>
- </configSections>
- <Galbanum>
- <XmlPath>
- <add key="bean" value="../../IocBean.xml"></add>
- </XmlPath>
- </Galbanum>
../为父目录,该方式可以配置多个XML文件,放在不同的路径。但是在加载的时候都为前置加载。
在前些项目中都为独立项目,每个都可以单独使用,但IOC中使用了Cache项目中的缓存,即,在反射对象的时候使用了缓存Type,来减少加载Assembly和通过Assembly.GetType()的次数,
项目使用类为ObjcetFactory中的Create(string key)//在xml文件中配置的key
例一个XML文件,上面在app.config配置的IocBean.xml:
- <?xml version="1.0" encoding="utf-8" ?>
- <Ioc>
- <object key="IocTest" value="GalbanumConsole.IocTest"/>
- <object key="IocTest2" value="GalbanumConsole.IocTest2"/>
- <object key="Logger" value="Logger.Logger,Logger"/>
- <object key="entity1" value="Entity.Employee,Entity"/>
- </Ioc>
通过ObjcetFactory可以动过XML中的KEY值动态创建实例:
- static void Main(string[] args)
- {
- Employee emp = ObjectFactory.Create("entity1") as Employee; //加载程序集,并缓存Type
- Employee emp1 = ObjectFactory.Create("entity1") as Employee;//缓存中获取Type
- Console.ReadLine();
- }
通过XML文件来实现创建对象的松耦合,即为容器IOC思想,使用相当简单,当你需要把对应KEY值中创建的实例改变时,仅需改变XML文件.