.NET 配置项扩展

using System;
using System.Configuration;

namespace ConsoleApplication3
{
    /*
        web.config 或 app.config 中的配置示例如下(注:configSections 节一定要是 configuration 节下的第一个元素):
     
        
        
            
                
http://cn.bing.com/" port="80"> */ 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; } } } }

 

你可能感兴趣的:(.NET 配置项扩展)