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     /// 说明:
11     /// 创建日期:2016/10/27 8:54:11
12     /// 创建人:曹永承
13     /// </summary>
14     public class Conn
15     {
16         public string DataBase { get; set; }
17
18         public string Server { get; set; }
19
20         public string UserId { get; set; }
21
22         public string Password { get; set; }
23
24         public override string ToString()
25         {
26             return string.Format("server={0};database={1};user id={2};password={3}", Server, DataBase, UserId, Password);
27         }
28     }
29 }

步骤2:定义一个ConnSectionHandler类实现IConfigurationSectionHandler接口

 1 using System.Configuration;
 2 using System.Xml;
 3
 4 namespace ConsoleApplication1.config
 5 {
 6     /// <summary>
 7     /// 说明:
 8     /// 创建日期:2016/10/27 8:52:35
 9     /// 创建人:曹永承
10     /// </summary>
11     public class ConnSectionHandler : IConfigurationSectionHandler
12     {
13         public object Create(object parent, object configContext, XmlNode section)
14         {
15             Conn conn = new Conn();
16
17             if (section != null)
18             {
19                 foreach (XmlNode node in section.ChildNodes)
20                 {
21                     switch (node.Name)
22                     {
23                         case "server":
24                             conn.Server = node.SelectSingleNode("@value").InnerText;
25                             break;
26                         case "database":
27                             conn.DataBase = node.SelectSingleNode("@value").InnerText;
28                             break;
29                         case "userid":
30                             conn.UserId = node.SelectSingleNode("@value").InnerText;
31                             break;
32                         case "password":
33                             conn.Password = node.SelectSingleNode("@value").InnerText;
34                             break;
35                     }
36
37                 }
38             }
39
40             return conn;
41         }
42     }
43 }

步骤3:配置xml

1 <configSections>
2   <section name="conn" type="ConsoleApplication1.config.ConnSectionHandler,ConsoleApplication1"/>
3 </configSections>
4 <conn>
5   <server value="(local)"/>
6   <database value="testDB"/>
7   <userid value="sa"/>
8   <password value="123456"/>
9 </conn>

步骤4:测试代码

1 Conn conn = ConfigurationManager.GetSection("conn") as Conn ;
2 Console.WriteLine(conn);
3 Console.ReadKey();

输出结果:

时间: 2024-10-22 19:47:09

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

c# 配置文件之configSections配置

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

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

在很多时候我们需要自定义我们自己的自定义App.config 文件,而微软为我们提供了默认的 System.Configuration.DictionarySectionHandler System.Configuration.NameValueSectionHandler       System.Configuration.SingleTagSectionHandler DictionarySectionHandler使用 DictionarySectionHandler的工作方式与Name

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

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

【转】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

MyBatis(三):核心配置文件的重要配置

0.核心配置文件 mybatis-config.xml MyBatis 的配置文件控制了 MyBatis 行为的设置和属性信息. 配置文档的顶层结构如下: 必须按照以下顺序配置,否则会报错(可以缺,不能乱) configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment

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

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

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

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

MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置

一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人 工做的只是修复故障的web服务器. 二.环境 ? 1 2 3 vip:192.168.1.203\204 mysql-master:192.168.1.231 mysql-

vsftpd配置文件详解 ---配置解说

vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空:匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传. 3>本地用户的登录名为本地用户名,口令为此本地用户的口令:本地用户可以在自 己家目录中进行读写操作:本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载. write_en