Custom Configuration 的两种方法:1.Configuration Sections
第一种Configuration Sections
2.CustomConfigurationManager.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的更多相关文章
- Custom Configuration 的两种方法:2.XmlSerializer XmlAttribute
第二种:XmlSerializer XmlAttribute 1.CustomConfiguration.xml 2.CustomConfigurationSetting.cs 3.CustomCon ...
- SpringBoot java配置类@Configuration 的两种写法
首先在Springboot项目中,件一个java类,使用注解@Configuration ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 , ...
- C# web api返回类型设置为json的两种方法
web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...
- C# web api 返回类型设置为json的两种方法
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- Linux安装MySQL的两种方法
转载:http://blog.csdn.net/superchanon/article/details/8546254/ 1. 运行平台:CentOS 6.3 x86_64,基本等同于RH ...
- hive权威安装出现的不解错误!(完美解决)两种方法都可以
以下两种方法都可以,推荐用方法一! 方法一: 步骤一: yum -y install mysql-server 步骤二:service mysqld start 步骤三:mysql -u root - ...
- Cisco设备IOS的恢复方法 两种方法
如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我 ...
- Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法
Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. fs.listFiles方法,返回Loc ...
- ToStringBuilder学习(二):两种方法用法优缺点及一个问题
研究ApacheCommon源码, 先从一个最简单的开始,即围绕Object类里的toString方法自动化实现的一系列类. 怎么来自动化地实现toString方法, 有两种:反射和手 ...
随机推荐
- HashMap并发分析
我们听过并发情况下的HashMap,会出现成环的情况,现在,我就来总结一下它成环的过程. 一言以蔽之,就是他在resize的时候,会改变元素的next指针. 之前在一篇博客里提到,HashMap的re ...
- 在 Android 中实现 Redux 的一点经验
简评: Redux 是一个用于应用程序状态管理的开源JavaScript库,其核心是通过可管理和控制的状态来描述一个系统.这意味着其思想其实是可以应用于任何类型应用的开发的,包括移动应用. Redux ...
- CUDA warning C4819的消除
问题描述:在使用VS2010编译CUDA程序时,有很多C4819警告: warning C4819:The file contains a character that cannot be repre ...
- 【洛谷P2915】Mixed Up Cows
题目大意:给定一个长度为 N 的序列,每个位置有一个权值,现要求重新排列这个序列,使得相邻的权值差的绝对值大于 K,求合法排列的方案数. 题解: 由于 N 很小,应该可以想到状压,考虑如何进行设计状态 ...
- DevExpress ASP.NET v19.1版本亮点:Pivot Grid等控件
行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Controls v19.1中新增的一些控件及增强的控件功能 ...
- django与ajax:ajax结合sweetalter ,批量插入数据 ;分页器组件
目录 一.ajax结合sweetalter 二.bulk_create批量插入数据 三.简易版分页器推导 1. 推导步骤 四.自定义分页器的使用 1. 自定义分页器模板 2. 使用方法 (1)后端代码 ...
- Word2Vec小心得
今天终于想明白了分层softmax的作用: 哈夫曼树的作用是什么??用平均最小的长度编码!编码是为了解码成信息! 神经概率语言模型:有映射层,隐藏层,输出层,假设隐藏层是300维,输出层是和单词的数量 ...
- js 多个三目运算符优先级
读JS代码遇到一段看不懂运算优先级的代码,如下 var BrowserSys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ...
- HTML新手入门(1)
HTML新手入门(1) ——编译器下载及基础框架 一.编译器下载 作为新手,听取大佬的建议,用HBuilder进行编译. 下载地址:www.dcloud.io/ 进入到首页左上角有一个如下图标. (这 ...
- 51 Nod 1134 最长递增子序列(经典问题回顾)
1134 最长递增子序列 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元 ...