[ConfigurationProperty("children", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(ChildSection), CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap, RemoveItemName = "remove")]
public Children Children
{
get
{
return (Children)base["children"];
}
set
{
base["children"] = value;
}
}
我们会经常用到类似appSettings配置节的键值对的构造,这时候我们就不必再自己实现了,我们可以直接使用现有的System.Configuration.NameValueConfigurationCollection类来定义一个自定义的键值对。可以在Complex类中定义如下属性
复制代码 代码如下:
[ConfigurationProperty("NVs", IsDefaultCollection = false)]
public System.Configuration.NameValueConfigurationCollection NVs
{
get
{
return (NameValueConfigurationCollection)base["NVs"];
}
set
{
base["NVs"] = value;
}
}
然后在配置文件的complex节中添加键值对配置
复制代码 代码如下:
<NVs>
<add value="123"/>
<add value="12d3"/>
</NVs>
到这儿已经基本上可以满足所有的配置需求了。不过还有一点更大但是不复杂的概念,就是sectionGroup。我们可以自定义SectionGroup,然后在sectionGroup中配置多个section;分组对于大的应用程序是很有意义的。
如下配置,配置了一个包含simple和一个complex两个section的sectionGroup
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup type="ConfigExample.Configuration.SampleSectionGroup,ConfigExample">
<section type="ConfigExample.Configuration.SimpleSection,ConfigExample" allowDefinition="Everywhere" />
<section type="ConfigExample.Configuration.ComplexSection,ConfigExample" allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
<sampleGroup>
<simple maxValue="20" minValue="1">
</simple>
<complex>
<child firstName="James" lastName="Bond"/>
<children>
<add firstName="Zhao" lastName="yukai"/>
<add firstName="Lee" lastName="yukai"/>
<remove firstName="Zhao"/>
</children>
<NVs>
<add value="123"/>
<add value="12d3"/>
</NVs>
</complex>
</sampleGroup>
</configuration>
为了方便的存取sectionGroup中的section我们可以实现一个继承自System.Configuration.ConfigurationSectionGroup类的自定义类。实现很简单,就是通过基类的Sections[“sectionName”]索引器返回Section。如下:
复制代码 代码如下: