第一种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. HashMap并发分析

    我们听过并发情况下的HashMap,会出现成环的情况,现在,我就来总结一下它成环的过程. 一言以蔽之,就是他在resize的时候,会改变元素的next指针. 之前在一篇博客里提到,HashMap的re ...

  2. 在 Android 中实现 Redux 的一点经验

    简评: Redux 是一个用于应用程序状态管理的开源JavaScript库,其核心是通过可管理和控制的状态来描述一个系统.这意味着其思想其实是可以应用于任何类型应用的开发的,包括移动应用. Redux ...

  3. CUDA warning C4819的消除

    问题描述:在使用VS2010编译CUDA程序时,有很多C4819警告: warning C4819:The file contains a character that cannot be repre ...

  4. 【洛谷P2915】Mixed Up Cows

    题目大意:给定一个长度为 N 的序列,每个位置有一个权值,现要求重新排列这个序列,使得相邻的权值差的绝对值大于 K,求合法排列的方案数. 题解: 由于 N 很小,应该可以想到状压,考虑如何进行设计状态 ...

  5. DevExpress ASP.NET v19.1版本亮点:Pivot Grid等控件

    行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Controls v19.1中新增的一些控件及增强的控件功能 ...

  6. django与ajax:ajax结合sweetalter ,批量插入数据 ;分页器组件

    目录 一.ajax结合sweetalter 二.bulk_create批量插入数据 三.简易版分页器推导 1. 推导步骤 四.自定义分页器的使用 1. 自定义分页器模板 2. 使用方法 (1)后端代码 ...

  7. Word2Vec小心得

    今天终于想明白了分层softmax的作用: 哈夫曼树的作用是什么??用平均最小的长度编码!编码是为了解码成信息! 神经概率语言模型:有映射层,隐藏层,输出层,假设隐藏层是300维,输出层是和单词的数量 ...

  8. js 多个三目运算符优先级

    读JS代码遇到一段看不懂运算优先级的代码,如下 var BrowserSys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ...

  9. HTML新手入门(1)

    HTML新手入门(1) ——编译器下载及基础框架 一.编译器下载 作为新手,听取大佬的建议,用HBuilder进行编译. 下载地址:www.dcloud.io/ 进入到首页左上角有一个如下图标. (这 ...

  10. 51 Nod 1134 最长递增子序列(经典问题回顾)

    1134 最长递增子序列  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元 ...