zoukankan      html  css  js  c++  java
  • .NET 配置项扩展

    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;
                }
            }
        }
    }
    本博客内容,如需转载请务必保留超链接。

    Contact Me:Mail此处省略好几个字...
  • 相关阅读:
    python编写弹球游戏的实现代码
    Linux kernal
    ccc
    Ubuntu14.04 支持 exFat 格式操作
    Ubuntu 14.04 tar 打包系统安装到新机器
    Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上
    gzip 的使用
    gzip: stdin: unexpected end of file tar: Unexpected EOF in archive
    c++ 实现等待5s
    Ubuntu14.04 系统复制迁移到新的机器上
  • 原文地址:https://www.cnblogs.com/jroger/p/5029030.html
Copyright © 2011-2022 走看看