using System; using System.Configuration; namespace ConsoleApplication3 { /* web.config 或 app.config 中的配置示例如下(注:configSections 节一定要是 configuration 节下的第一个元素): <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="urls" type="ConsoleApplication3.EasConfigurationSection, ConsoleApplication3"/> </configSections> <urls> <url name="cn.bing.com" url="http://cn.bing.com/" port="80"></url> </urls> </configuration> */ public class EasConfigurationElement : ConfigurationElement { [ConfigurationProperty("name", IsKey=true, IsRequired=true)] public string Name { get { return (string)this["name"]; } set { this["name"] = value; } } [ConfigurationProperty("url", DefaultValue = "")] public string Url { get { return (string)this["url"]; } set { this["url"] = value; } } [ConfigurationProperty("port", DefaultValue = 0, IsRequired = false)] [IntegerValidator(MinValue = 0, MaxValue = 8080, ExcludeRange = false)] public int Port { get { return (int)this["port"]; } set { this["port"] = value; } } } [ConfigurationCollection(typeof(EasConfigurationElement))] public class EasConfigurationElementCollection : ConfigurationElementCollection { protected override string ElementName { get { return "url"; } } public override ConfigurationElementCollectionType CollectionType { get { return ConfigurationElementCollectionType.BasicMap; } } protected override ConfigurationElement CreateNewElement() { return new EasConfigurationElement(); } protected override object GetElementKey( ConfigurationElement element ) { var newElement = element as EasConfigurationElement; if( newElement != null ) return newElement.Name; throw new NullReferenceException( "element can not convert to " + typeof( EasConfigurationElement ) ); } public EasConfigurationElement this[ int index ] { get { return (EasConfigurationElement)BaseGet( index ); } set { if( BaseGet( index ) != null ) { BaseRemoveAt( index ); } BaseAdd( index, value ); } } } public class EasConfigurationSection : ConfigurationSection { [ConfigurationProperty("", IsDefaultCollection = true)] public EasConfigurationElementCollection Urls { get { var collection = (EasConfigurationElementCollection)base[""]; return collection; } } } }