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此处省略好几个字...
  • 相关阅读:
    Word中如何删除目录页的页码
    在java程序代码中打开文件
    Web程序报错:Error instantiating servlet
    将日期类型数据写入到数据库中
    《将博客搬至CSDN》
    软件测试工程师常见的面试题
    我对需求文档的理解
    简单的学生管理系统,实现增删改查
    如何求两个数的最大公约数
    【转载】LoadRunner监控window系统各项指标详解
  • 原文地址:https://www.cnblogs.com/jroger/p/5029030.html
Copyright © 2011-2022 走看看