Galbanum之Ioc(一)

 IOC是Galbanum在08年推出的最后一个项目了,主要是模仿spring.net的IOC容器,但是spring.net不同的是,在使用的时候,只要在web.config或者app.config中只要配置对象映射xml文件的地方,例:

源程序下载地址:http://download.csdn.net/source/897222

  1. configuration>
  2.   <configSections>
  3.     <sectionGroup name="Galbanum">
  4.          <section name="XmlPath" type="Ioc.XmlDocumentHandler,Ioc"/>
  5.     </sectionGroup>
  6.   </configSections>
  7.   <Galbanum>   
  8.     <XmlPath>
  9.       <add key="bean" value="../../IocBean.xml"></add>
  10.     </XmlPath>
  11.     
  12.   </Galbanum>

../为父目录,该方式可以配置多个XML文件,放在不同的路径。但是在加载的时候都为前置加载。

 

在前些项目中都为独立项目,每个都可以单独使用,但IOC中使用了Cache项目中的缓存,即,在反射对象的时候使用了缓存Type,来减少加载Assembly和通过Assembly.GetType()的次数,

 

  项目使用类为ObjcetFactory中的Create(string key)//在xml文件中配置的key

 

例一个XML文件,上面在app.config配置的IocBean.xml:

 

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <Ioc>
  3.   <object key="IocTest" value="GalbanumConsole.IocTest"/>
  4.   <object key="IocTest2" value="GalbanumConsole.IocTest2"/>
  5.   <object key="Logger" value="Logger.Logger,Logger"/>
  6.   <object key="entity1" value="Entity.Employee,Entity"/>
  7. </Ioc>

通过ObjcetFactory可以动过XML中的KEY值动态创建实例:

 

  1.  static void Main(string[] args)
  2.         {
  3.             Employee emp = ObjectFactory.Create("entity1"as Employee; //加载程序集,并缓存Type
  4.             Employee emp1 = ObjectFactory.Create("entity1"as Employee;//缓存中获取Type
  5.             Console.ReadLine();
  6.         }

通过XML文件来实现创建对象的松耦合,即为容器IOC思想,使用相当简单,当你需要把对应KEY值中创建的实例改变时,仅需改变XML文件.

 

你可能感兴趣的:(xml,bean,String,assembly,IOC,encoding)