c# 配置文件之configSections配置(二)

在很多时候我们需要自定义我们自己的自定义App.config 文件,而微软为我们提供了默认的

System.Configuration.DictionarySectionHandler

System.Configuration.NameValueSectionHandler      

System.Configuration.SingleTagSectionHandler

DictionarySectionHandler使用

  DictionarySectionHandler的工作方式与NameValueFileSectionHandler几乎相同,其区别是DictionarySectionHandler返回HashTable对象,而后者返回的是NameValueCollection。

1 <configSections>
2   <section name="mailServer" type="System.Configuration.DictionarySectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
3 </configSections>
4 <mailServer>
5   <add key="url" value="mail.163.com"/>
6   <add key="username" value="admin"/>
7   <add key="password" value="123456"/>
8 </mailServer>

  使用代码

1 IDictionary dic = ConfigurationManager.GetSection("mailServer") as IDictionary;
2 Console.WriteLine(dic);
3 foreach (var key in dic.Keys)
4 {
5     Console.WriteLine("{0}:{1}", key, dic[key]);
6 }
7 Console.ReadKey();

由于DictionarySectionHandler返回的是HashTable对象,而HashTable中的Key是唯一的。那么DictionarySectionHandler如果配置了相同的Key,后面的值会覆盖前面的值。

还是上面的的例子,我们将配置文件修改一下

1 <mailServer>
2   <add key="url" value="mail.163.com"/>
3   <add key="username" value="admin"/>
4   <add key="password" value="123456"/>
5   <add key="password" value="12345678"/>
6 </mailServer>

接下来看看输出结果:

NameValueSectionHandler使用

  xml配置

1 <configSections>
2   <section name="mailServer" type="System.Configuration.NameValueSectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
3 </configSections>
4 <mailServer>
5   <add key="url" value="mail.163.com"/>
6   <add key="username" value="admin"/>
7   <add key="password" value="123456"/>
8   <add key="password" value="12345678"/>
9 </mailServer>

  代码:

1 NameValueCollection mailServer = ConfigurationManager.GetSection("mailServer") as NameValueCollection;
2 Console.WriteLine(mailServer);
3 foreach (var key in mailServer.AllKeys)
4 {
5     Console.WriteLine("{0}:{1}",key,mailServer[key]);
6 }
7 Console.ReadKey();

  输出结果:

时间: 2024-10-05 02:44:23

c# 配置文件之configSections配置(二)的相关文章

c# 配置文件之configSections配置

对于小型项目来说,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名称很容易写错,这时,我们有几种解决方案 1 自己开发一个配置信息持久化类,用来管理配置信息,并提供面向对象的支持 2 使用.net自带的configSections,将配置信息分块管理,并提供实体类,便于开发人员友好的去使用它 本文主要说说第二种方案,它由实体类,实体类工厂及配置文件三个部分,看代码: 实体类设计: 1 namespace

c# 配置文件之configSections配置(三)

使用IConfigurationSectionHandler配置configSections ·步骤1:定义一个实体类 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 /// <summary> 10 /// 说明

App.config和Web.config配置文件的自定义配置节点

前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文件中的配置貌似出现了问题.查找节点发现是如下节点: <configSections> <section name="Test1" type="Demo.Section1,Demo"/> .............. </configSect

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

读取配置文件异常,配置系统未能初始化

异常原因:配置文件内容的顺序有一定要求 configSections-->connectionStrings-->appSettings <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="WebConfigSection" type="MediaActionSe

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

(转)struts2.0配置文件、常量配置详解

一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.propreties文件配置,是因为为了保持与WebWork的向后兼容 2.在实际开发中,在web.xml中配置常量相比其他两种,需要更多的代码量,会降低了web.xml的可读性 3.通常推荐在struts.xml文件中配置struts2的常量,而且便于集中管理 sturt2中搜索加载常量的顺序是: str

sprincloud-Feign配置二

一 前言 前文Feign配置一中讲述了feign的工作流程,日志设置,基本的HTTP远程过程调用,以及相关的注解说明:这篇文章主要说明的是feign的相关支持配置,以及替换原生的FeignClient: 二 OkHttp 目前主流的是使用OkHttp替换原生的FeignClient,Apache的HttpClient感觉没有OkHttp好,所以就不提了. OkHttp 详细的信息可以参照文档 https://square.github.io/okhttp/: 主要特色如下: HTTP2支持多请求

mongo shell启动配置文件.mongorc.js(二)

mongo shell启动配置文件.mongorc.js(二) 如果你的主目录下有个.mongorc.js文件,那么当你启动shell时他就会自动运行.使用它可以初始化任何你经常使用的helper方法和你不想意外操作的删除方法. 比如,你不想使用默认的dropDatabase()方法了,你可以在.mongorc.js文件中添加下面的命令: DB.prototype.dropDatabase = function() {        print("No dropping DBs!");