C#创建自定义配置节

name为自定义节点的名称,type为自定义节点解析文件的命名空间和自定义节处理程序的类名

1. 在<configSections>节点中注册你所要定义的节点名称及用于处理该节点的配置节处理程序。代码如下:

<configSections>
<section name="dbFactory" type="DbFactory.Configuration.DbFactorySection,DbFactory.Configuration"/>
</configSections>

2. 在适当的位置添加自定义的节点。代码如下:

  <configSections>
        <section name="dbFactory" type="DbFactory.Configuration.DbFactorySection,DbFactory.Configuration"</configSections>

    <dbFactory>
        <default factory="sql"></default>
        <factorys>
            <add name="sql"  assembly="Hello.Data"  class="SqlDbFactory" />
            <add name="oracle" assembly="Hello.Data" class="OracleDbFactory" />             
        </factorys>
    </dbFactory>

 public class DefaultElement : ConfigurationElement
    {
        [ConfigurationProperty("factory")]
        public string Factory
        {
            get
            {
                return this["factory"] as string;
            }
            set
            {
                this["factory"] = value;
            }
        }
    }

public class FactoryElement : ConfigurationElement
    {
        [ConfigurationProperty("name")]
        public string Name
        {
            get
            {
                return this["name"] as string;
            }
            set
            {
                this["name"] = value;
            }
        }

        [ConfigurationProperty("assembly")]
        public string Assembly
        {
            get
            {
                return this["assembly"] as string;
            }
            set
            {
                this["assembly"] = value;
            }
        }

        [ConfigurationProperty("class")]
        public string Class
        {
            get
            {
                return this["class"] as string;
            }
            set
            {
                this["class"] = value;
            }
        }
    }
public class FactoryElements : ConfigurationElementCollection
    {
        protected override ConfigurationElement CreateNewElement()
        {
            return new FactoryElement();
        }

        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((FactoryElement)element).Name;
        }

        public FactoryElement this[string name]
        {
            get
            {
                return BaseGet(name) as FactoryElement;
            }
        }
    }

public class DbFactorySection : ConfigurationSection
    {
        [ConfigurationProperty("default")]
        public DefaultElement DefaultFactory
        {
            get
            {
                return this["default"] as DefaultElement;
            }
            set
            {
                this["default"] = value;
            }
        }

        [ConfigurationProperty("factorys")]
        public FactoryElements Factorys
        {
            get
            {
                return this["factorys"] as FactoryElements;
            }

            set
            {
                this["factorys"] = value;
            }
        }
    }

原文链接:

http://www.cnblogs.com/amylis_chen/p/5985054.html

posted @ 2020-01-10 15:31  青橙时光  阅读(529)  评论(0编辑  收藏  举报