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方法, 有两种:反射和手 ...
随机推荐
- 【异常】org.apache.hadoop.hdfs.server.common.InconsistentFSStateException
1 异常信息 - ::, INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Maximum size of an xattr: -- ...
- requests:用于发送http请求,专为人类设计
介绍 requests模块是一个专门用来发送http请求的模块 如何发送请求 import requests """ 使用requests模块发送请求非常简单 首先请求有 ...
- Redis位操作介绍
在学习redis的过程了,看到了redis还能用于大数据处理,具体场景如下:腾讯10亿用户,要几个毫秒内查询到某个用户是否在线,你能怎么做?千万别说给每个用户建立一个key,然后挨个记(你可以算一下需 ...
- 第06课:GDB 常用命令详解(下)
本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 6.1 disassemble 命令 当进行 ...
- 【HDU5890】Eighty seven
题目大意:给定 N 个数,M 个询问,每次询问如果去掉三个数(可能相同),能否选择恰好 10 个数字,凑出 87 这个数. 题解:骚操作.. 集合凑数问题是一个很经典的模型,即:背包问题. 先进行预处 ...
- conda退出base 环境
安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境 方法一: 每次在命令行通过conda deactivate退出base环境回到系统自动的环境 方法二 1,通过 ...
- Nowcoder Hash Function ( 拓扑排序 && 线段树优化建图 )
题目链接 题意 : 给出一个哈希表.其避免冲突的方法是线性探测再散列.现在问你给出的哈希表是否合法.如果合法则输出所有元素插入的顺序.如果有多解则输出字典序最小的那一个.如果不合法则输出 -1 分析 ...
- python生成手机号
""" 电信号段:133/153/180/181/189/177; 联通号段:130/131/132/155/156/185/186/145/175; 移动号段:134/ ...
- ubuntu开启ssh服务时,报:start:Unknown job : ssh
这里是参考网站资料,并记录下. 如图所示: 解决方法: 输入以下命令即可 /usr/sbin/sshd mkdir /var/run/sshd /usr/sbin/sshd netstat -nlt ...
- 实验吧(你真的会PHP吗)CTF之代码审计最终版---解析是错的 我的才是对的
0X01代码的详细讲解 0X02代码分析完了 我们来理一下 思路 条件 A POST提交一个number参数的值不能为纯数字 C number取整数后是回文数 D number经过strval转译后的 ...