第一种Configuration Sections

1.App.config

2.CustomConfigurationManager.cs

3.TestProgram.cs.

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="CustomSettings" type="CustomConfigurationSection.CustomSettingsConfigurationSection,CustomConfigurationSection"/>
</configSections>
<appSettings></appSettings>
<CustomSettings>
<SElement name="name01" value="value01" />
<MElement name="mElement">
<SElement01 name="name02" value="value02" />
<SElement02 name="name03" value="value03" />
</MElement>
<CElement>
<add key="key01" value="value04" />
<add key="key02" value="value05" />
</CElement>
<NElement>
<add key="key03" value="value06">
<SElement03 name="name04" value="value07" />
</add>
<add key="key04" value="value08">
<SElement03 name="name05" value="value09" />
</add>
</NElement>
<M2Element>
<SElement name="name06" value="value10" />
<SElement name="name07" value="value11" />
</M2Element>
</CustomSettings>
</configuration>

CustomConfigurationManager.cs

using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Text;
using System.IO;
using System.Configuration;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Serialization; namespace CustomConfigurationSection
{
public class CustomSettingsConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("SElement")]
public SElement SElement
{
get { return (SElement)this["SElement"]; }
} [ConfigurationProperty("MElement")]
public MElement MElement
{
get { return (MElement)this["MElement"]; }
} [ConfigurationProperty("CElement")]
public TElementCollection CElement
{
get { return (TElementCollection)this["CElement"]; }
} [ConfigurationProperty("NElement")]
public NElementCollection NElement
{
get { return (NElementCollection)this["NElement"]; }
} [ConfigurationProperty("M2Element")]
[ConfigurationCollection(typeof(SElement),AddItemName="SElement")]
public SElementCollection M2Element
{
get { return (SElementCollection)this["M2Element"]; }
}
} public class SElement : ConfigurationElement
{
[ConfigurationProperty("name")]
public String Name
{
get
{
return (String)this["name"];
}
set
{
this["name"] = value;
}
}
[ConfigurationProperty("value")]
public String Value
{
get
{
return (String)this["value"];
}
set
{
this["value"] = value;
}
}
} public class MElement : ConfigurationElement
{
[ConfigurationProperty("name")]
public string Name
{
get { return (string)this["name"]; }
} [ConfigurationProperty("SElement01")]
public SElement SElement01
{
get { return (SElement)this["SElement01"]; }
}
[ConfigurationProperty("SElement02")]
public SElement SElement02
{
get { return (SElement)this["SElement02"]; }
}
} public class TElement : ConfigurationElement
{
[ConfigurationProperty("key")]
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;
}
}
} public class NElement : ConfigurationElement
{
[ConfigurationProperty("key")]
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;
}
} [ConfigurationProperty("SElement03")]
public SElement NestedElement
{
get { return (SElement)this["SElement03"]; }
}
} public class TElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new TElement();
} protected override object GetElementKey(ConfigurationElement item)
{
TElement element = (TElement)item;
return getKey(element);
} public TElement this[int index]
{
get
{
return (TElement)BaseGet(index);
}
set
{
if (BaseGet(index) != null)
{
BaseRemove(index);
}
BaseAdd(index, value);
}
} public new TElement this[string name]
{
get
{
return (TElement)BaseGet(name);
}
} public new int Count
{
get { return base.Count; }
} public int IndexOf(TElement item)
{
return BaseIndexOf(item);
} public void RemoveAt(int index)
{
BaseRemoveAt(index);
} public void Add(TElement item)
{
BaseAdd(item);
} public void Clear()
{
BaseClear();
} public bool Contains(TElement item)
{
return BaseIndexOf(item) >= ;
} public void CopyTo(TElement[] array, int arrayIndex)
{
base.CopyTo(array, arrayIndex);
} public new bool IsReadOnly
{
get { return false; }
} public bool Remove(TElement item)
{
if (BaseIndexOf(item) >= )
{
BaseRemove(item);
return true;
}
return false;
} private string getKey(TElement item)
{
return item.Key;
}
} public class NElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new NElement();
} protected override object GetElementKey(ConfigurationElement item)
{
NElement element = (NElement)item;
return getKey(element);
} public NElement this[int index]
{
get
{
return (NElement)BaseGet(index);
}
set
{
if (BaseGet(index) != null)
{
BaseRemove(index);
}
BaseAdd(index, value);
}
} public new NElement this[string name]
{
get
{
return (NElement)BaseGet(name);
}
} public new int Count
{
get { return base.Count; }
} public int IndexOf(NElement item)
{
return BaseIndexOf(item);
} public void RemoveAt(int index)
{
BaseRemoveAt(index);
} public void Add(NElement item)
{
BaseAdd(item);
} public void Clear()
{
BaseClear();
} public bool Contains(NElement item)
{
return BaseIndexOf(item) >= ;
} public void CopyTo(NElement[] array, int arrayIndex)
{
base.CopyTo(array, arrayIndex);
} public new bool IsReadOnly
{
get { return false; }
} public bool Remove(NElement item)
{
if (BaseIndexOf(item) >= )
{
BaseRemove(item);
return true;
}
return false;
} private string getKey(NElement item)
{
return item.Key;
}
} public class SElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new SElement();
} protected override object GetElementKey(ConfigurationElement item)
{
SElement element = (SElement)item;
return getKey(element);
} public SElement this[int index]
{
get
{
return (SElement)BaseGet(index);
}
set
{
if (BaseGet(index) != null)
{
BaseRemove(index);
}
BaseAdd(index, value);
}
} public new SElement this[string name]
{
get
{
return (SElement)BaseGet(name);
}
} public new int Count
{
get { return base.Count; }
} public int IndexOf(SElement item)
{
return BaseIndexOf(item);
} public void RemoveAt(int index)
{
BaseRemoveAt(index);
} public void Add(SElement item)
{
BaseAdd(item);
} public void Clear()
{
BaseClear();
} public bool Contains(SElement item)
{
return BaseIndexOf(item) >= ;
} public void CopyTo(SElement[] array, int arrayIndex)
{
base.CopyTo(array, arrayIndex);
} public new bool IsReadOnly
{
get { return false; }
} public bool Remove(SElement item)
{
if (BaseIndexOf(item) >= )
{
BaseRemove(item);
return true;
}
return false;
} private string getKey(SElement item)
{
return item.Name;
}
} }

TestProgram.cs

using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using System.Xml.XPath;
using System.Configuration; namespace CustomConfigurationSection
{
public class Program
{
static void Main(string[] args)
{
try
{
CustomSettingsConfigurationSection config = (CustomSettingsConfigurationSection)System.Configuration.ConfigurationManager.GetSection("CustomSettings");
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
}

http://blog.csdn.net/zpx3243/article/details/5970585

Custom Configuration 的两种方法:1.Configuration Sections的更多相关文章

  1. Custom Configuration 的两种方法:2.XmlSerializer XmlAttribute

    第二种:XmlSerializer XmlAttribute 1.CustomConfiguration.xml 2.CustomConfigurationSetting.cs 3.CustomCon ...

  2. SpringBoot java配置类@Configuration 的两种写法

    首先在Springboot项目中,件一个java类,使用注解@Configuration  ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 , ...

  3. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  4. C# web api 返回类型设置为json的两种方法

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  5. Linux安装MySQL的两种方法

    转载:http://blog.csdn.net/superchanon/article/details/8546254/ 1.       运行平台:CentOS 6.3 x86_64,基本等同于RH ...

  6. hive权威安装出现的不解错误!(完美解决)两种方法都可以

    以下两种方法都可以,推荐用方法一! 方法一: 步骤一: yum -y install mysql-server 步骤二:service mysqld start 步骤三:mysql -u root - ...

  7. Cisco设备IOS的恢复方法 两种方法

    如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我 ...

  8. Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法

    Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. fs.listFiles方法,返回Loc ...

  9. ToStringBuilder学习(二):两种方法用法优缺点及一个问题

    研究ApacheCommon源码, 先从一个最简单的开始,即围绕Object类里的toString方法自动化实现的一系列类.         怎么来自动化地实现toString方法, 有两种:反射和手 ...

随机推荐

  1. linux下/etc/rc.d目录的介绍及redhat启动顺序

    init inittab rc0 rc1 rc2 rc3 rc5 rc6 rcS init.d init 系统启动超级进程 inittab 进程启动配置文件 rc0 - rc6 各启动级别的启动脚本 ...

  2. Delphi ListBox组件

  3. redis基础学习

    redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了java ...

  4. python文件操作-1.将PDF转成Excel

    # https://www.jianshu.com/p/f33233e4c712 import pdfplumber # 为了操作PDF from openpyxl import Workbook w ...

  5. eclipse+自己安装的maven不能run as 找不到包

    我本地环境eclipse自带maven但是默认指定的路径是c盘下,本着不想放c盘,就自己下了maven包集成到eclipse中,但是java类中main方法如果调用了maven中的包是找不到的.后类自 ...

  6. shell脚本if语句后面的中括号[]与java的if后面的小括号不同(),实际上[左中括号相当于test命令

    四.shell 中的条件判断命令 test 和 [   test 命令可以处理 shell 脚本中的各类工作.它产生的不是一般的输出,而是可使用的退出状态.test 命令通过接受各种不同的参数,来控制 ...

  7. 【转】深入理解Java多态性

    http://developer.51cto.com/art/200906/130414.htm http://blog.csdn.net/cyzero/article/details/7266831 ...

  8. GitLab项目管理实践

    群组 / 项目 群组和项目的关系我们可以简单的理解成文件夹和文件的关系.一个群组可以包含一个或多个项目. 使用群组,可以将相关的项目组合在一起,并允许成员同时访问多个项目. 群组也可以嵌套在子组中,建 ...

  9. pgadmin4 csrf错误导致docker-compose postgres服务下线

    docker-compse up 启动的前台服务, 过一会就自动停止 检查半天,发现是pgadmin4没安装正确不断报400 和 csrf error 然后pgadmin4为啥报这个, 因为pytho ...

  10. hdu 1796 How many integers can you find 容斥第一题

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...