zoukankan      html  css  js  c++  java
  • c#中的自定义配置节

    技术人写博客,真是应该,这个自定义配置节很早以前就做了,但现在项目中又要用到了,以前的错误还是会犯,今天还是把这些都记下来吧。c#中的自定义配置节主要是由以下几个类来实现的:ConfigurationSection,ConfigurationElementCollection和ConfigurationElement,层次也很清楚。ConfigurationSection就是最上导的节点。放在

    <configSections>

        <section name="" type="" />

     </configSections>

    里,其中name就是节点的名称,type里就是以“程序所在完整路径,程序集名”。

    ConfigurationElementCollection和ConfigurationElement就是管下面真正的配置了。多话不说了,贴上我的测试代码吧!

    namespace Test
    {
        class TestSection : ConfigurationSection
        {
            [ConfigurationProperty("columns", IsRequired = true)]
            public ColumnElements Columns
            {
                get
                {
                    return this["columns"] as ColumnElements;
                }
    
                private set{}
            }
    
            [ConfigurationProperty("times", IsRequired = true)]
            public string Times
            {
                get
                {
                    return this["times"] as string;
                }
    
                private set { }
            }
        }
    }
    

      

    namespace Test
    {
        public class ColumnElements : ConfigurationElementCollection
        {
            //public ColumnElements()
            //{
            //    return new ColumnElement();
            //}
    
            #region 基类方法重载
    
            protected override ConfigurationElement CreateNewElement()
            {
                return new ColumnElement();
            }
    
            protected override object GetElementKey(ConfigurationElement element)
            {
                return (element as ColumnElement).Name;
            }
    
            public new ColumnElement this[string name]
            {
                get
                {
                    return BaseGet(name) as ColumnElement;
                }
            }
    
            public new ColumnElement this[int index]
            {
                get
                {
                    return BaseGet(index) as ColumnElement;
                }
            }
    
            protected override string ElementName
            {
                get
                {
                    return "column";
                }
            }
    
            public override ConfigurationElementCollectionType CollectionType
            {
                get
                {
                    return ConfigurationElementCollectionType.BasicMap;
                }
            }
            #endregion
    
            #region 私有方法
            
    
    
            #endregion
        }
    }
    

      

    namespace Test
    {
        public class ColumnElement : ConfigurationElement
        {
            #region 字段和属性
    
            [ConfigurationProperty("name", IsRequired = true)]
            public string Name
            {
                get
                {
                    return this["name"] as string;
                }
    
                private set{}
            }
    
            [ConfigurationProperty("type", IsRequired = true)]
            public string Type
            {
                get
                {
                    return this["type"] as string;
                }
    
                private set{}
            }
    
            [ConfigurationProperty("length", IsRequired = false)]
            public int? Length
            {
                get
                {
                    return (int?)this["length"];
                }
    
                private set{}
            }
    
            #endregion       
        }
    }
    

      最后一定要提醒的是:ConfigurationElementCollection的子类里必须要实现CollectionType方法和ElementName属性啊,不然肯定会出错了,切记啊!

  • 相关阅读:
    PAT (Advanced Level) 1010. Radix (25)
    PAT (Advanced Level) 1009. Product of Polynomials (25)
    PAT (Advanced Level) 1008. Elevator (20)
    PAT (Advanced Level) 1007. Maximum Subsequence Sum (25)
    PAT (Advanced Level) 1006. Sign In and Sign Out (25)
    PAT (Advanced Level) 1005. Spell It Right (20)
    PAT (Advanced Level) 1004. Counting Leaves (30)
    PAT (Advanced Level) 1001. A+B Format (20)
    PAT (Advanced Level) 1002. A+B for Polynomials (25)
    PAT (Advanced Level) 1003. Emergency (25)
  • 原文地址:https://www.cnblogs.com/tingchen/p/2155662.html
Copyright © 2011-2022 走看看