博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【.NET】在config文件中自定义配置节
阅读量:5879 次
发布时间:2019-06-19

本文共 3259 字,大约阅读时间需要 10 分钟。

相关类:

完成后的配置:

实现:

1. 首先实现 ConfigurationElement 抽象类。注意 ConfigurationProperty 的 name 是区分大小写的。

public class JRogerElement : ConfigurationElement{    public JRogerElement() { }    public JRogerElement(String key)    {        this.Key = key;    }    public JRogerElement(string key, string value)    {        this.Key = key;        this.Value = value;    }    [ConfigurationProperty("key", IsKey = true)]    public String Key    {        get { return (String)this["key"]; }        set { this["key"] = value; }    }    [ConfigurationProperty("value")]    public String Value    {        get { return (String)this["value"]; }        set { this["value"] = value; }    }}

2. 然后实现 ConfigurationElementCollection 抽象类。

public class JRogerElementCollection : ConfigurationElementCollection{    public JRogerElementCollection()    {            }    public JRogerElement this[int index]    {        get { return (JRogerElement)this.BaseGet(index); }        set        {            if (this.BaseGet(index) != null)            {                this.BaseRemoveAt(index);            }            this.BaseAdd(index, value);        }    }    public new JRogerElement this[String name]    {        get { return (JRogerElement)this.BaseGet(name); }    }    public void Clear() { this.BaseClear(); }    //关键    public override ConfigurationElementCollectionType CollectionType    {        get        {            return ConfigurationElementCollectionType.AddRemoveClearMap;        }    }    #region Overrides of ConfigurationElementCollection    ///     /// 当在派生的类中重写时,创建一个新的 
。 ///
///
/// 一个新的
。 ///
protected override ConfigurationElement CreateNewElement() { return new JRogerElement(); } protected override ConfigurationElement CreateNewElement(string elementName) { return new JRogerElement(elementName, "Data Source=.; Initial Catalog=TestDB; User Id=sa; Password=sa;"); } /// /// 在派生类中重写时获取指定配置元素的元素键。 /// ///
/// 一个
,用作指定
的键。 ///
/// 要为其返回键的
。 protected override object GetElementKey(ConfigurationElement element) { return ((JRogerElement)element).Key; } #endregion}

3. 最后实现 ConfigurationSection 抽象类。

public class JRogerSection : ConfigurationSection{    public JRogerSection()    {                }    [ConfigurationProperty("Services")]    public JRogerElementCollection JRogerService    {        get        {            return (JRogerElementCollection)this["Services"];        }    }    [ConfigurationProperty("name")]    public String Name    {        get { return (String)this["name"]; }        set { this["name"] = value; }    }    [ConfigurationProperty("JRogerElement")]    public JRogerElement CurrentConfig     {        get { return (JRogerElement)base["JRogerElement"]; }    }} 

应用:

static void Main(string[] args){    var section = ConfigurationManager.GetSection("JRogerServices") as JRogerSection;    Console.WriteLine(section.Name);    Console.WriteLine(section.CurrentConfig);    Console.WriteLine(section.JRogerService);    Console.ReadKey(true);}

以上只是一个简单的示例,还可以实现对配置文件的修改。具体请参考MSDN。 

转载地址:http://pqdix.baihongyu.com/

你可能感兴趣的文章
关于outlook 保存的.msg文件打开一次之后不能再次打开的问题
查看>>
CentOS 6.6安装python3.4.3后yum不能使用的解决办法
查看>>
应用程序日志中总是说MS DTC无法正确处理DC 升级/降级事件,是什么意思
查看>>
毕业了,爱情怎么办?
查看>>
关于django一个请求的生命周期
查看>>
Supervisor-容器中启动多个程序
查看>>
CSS颜色代码大全
查看>>
mybatis数据处理的几种方式
查看>>
QStandardItem and QStandardItemModel Class Reference
查看>>
我的友情链接
查看>>
使用Nginx搭建WEB服务器
查看>>
【oracle唯一主键SYS_GUID()】
查看>>
作业2
查看>>
raid技术-研究感受
查看>>
远程主机探测技术FAQ集 - 扫描篇
查看>>
C++中调用python函数
查看>>
Nomad添加acl认证
查看>>
“TI门外汉”网路知识笔记一 OSI参考模型
查看>>
你不需要jQuery(五)
查看>>
DatanodeDescriptor说明
查看>>