• .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此处省略好几个字...
  • 相关阅读:
    华为鲲鹏服务器测试
    gcc反汇编测试
    信息安全系统设计与实现:第五章学习笔记
    C语言实现ls之myls改进
    C语言编程实现mystat
    基于openEuler的OpenSSL编译安装和编程实践
    团队作业(三):确定分工
    centos的网络配置及克隆操作要点
    Flink特点分析
    机器学习之线性回归模型
  • 原文地址:https://www.cnblogs.com/jroger/p/5029030.html
Copyright © 2020-2023  润新知