相信大家在日常的开发工作中遇到过这样那样的信息需要通过配置文件来保存,避免对该信息的修改导致程序的重新编译,而且现在越来越多的系统开始大量使用配置文件的方式部署应用。
我这里就简单地把.net下日常用的配置方式例举一下,如有不全,还望指出!
归纳起来.net下常用的自定义配置有4种方式,如下配置文件:
对于自定义配置节的使用,我们会首先在<configSections>节点下定义它,然后就可以在</configuration>节点下使用了,其中每一个自定义的配置节需要一个<section>,name属性是配置节的名称,type是处理该配置节的处理器,负责解析该配置节。下面就是所配置的配置节的主体信息:
Test1 具有单个节点,可以在其中增加多个属性
Test2 可以定义字典方式的配置信息,可以在它的下面增加任意多个<add key="Hello" value="World" />
Test3 可以定义多个名称--值对
Test4 则可以定义自定义信息
下面是访问这三个配置节的代码:
//访问节点test4 , Person是一个自定义类型
Person per = (Person)ConfigurationSettings.GetConfig("Test4");
MessageBox.Show("Name:"+per.Name+"\r\nAge:"+per.Age);
4个获取配置的方法都用到了ConfigurationSettings.GetConfig(string str),但是他们的返回却是不同的,这是为什么呢?其实每个GetConfig方法的调用都会去使用配置文件中配置的Handler来解析相应的配置节,
|
配置节处理程序 |
返回类型 |
|
SingleTagSectionHandler |
Systems.Collections.IDictionary |
|
DictionarySectionHandler |
Systems.Collections.IDictionary |
|
NameValueSectionHandler |
Systems.Collections.Specialized.NameValueCollection |
| CustomerSectionHandler | Person |
该接口只有一个方法Create,该方法将配置节中的内容反序列化到指定的类中,这里是Person类,所以有了这个接口,我们可以定义任何的自定义类型到配置文件中,很方便的。
当然,配置节组是使用<sectionGroup>元素,将类似的配置节分到同一个组中。配置节组声明部分将创建配置节的包含元素,在<configSections>元素中声明配置节组,并将属于该组的节置于<sectionGroup>元素中。下面是一个包含配置节组的配置文件的例子: