使用ConfigurationManager来写自己的配置文件
在.NET 1.1下,你必须用过实现IConfigurationSectionHandler接口来进行操作。
但在.NET 2.0下,微软提供了一系列可以对配置文件进行操作的方法,而且非常强大,能够让你随便定义自己的配置节点。在开始之前我们先看看我们想写一个怎样的配置节:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
这个地方指定了我们想要写一个MailSettings的节,后面的type标识将会使用MyBlog这个assembly理的MyBlog.MailSection类来识别这个section。
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
这个地方有是我们自定义的一些配置了,value就是我们所需要的一些值。
现在目标已经有了,下面就是怎么去用这些API来读出我们需要的值:
首先很自然我们需要MailSettings的这个section,于是我们定义类:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
一个ConfigurationSection可以有自己的一些attribute,这些网上资料很多,我就不详解了。我关心的是下面的MailPlugins这层,这层在配置文件上被称为ConfigurationElementCollection,也就是一些ConfigurationElement的集合。那么我们先定义所需要的ConfigurationElement:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
接着是定义这个ConfigurationElement的集合:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
默认的抽象类是让我们必须override上面的两个保护方法。但是这样是不能满足我们的要求的,我们希望用add key 和 value这种形式来配置:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
这里相当重要!需要使用AddRemoveClearMap来确保配置处理节能够识别<add key="" value="" />,如果配置为别的会报给你add节无法识别的错误!
那么最后我们一个常用的功能没有提供:索引器!于是我们再加上:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
那么ConfigurationElementCollection告一段落了,现在就是把这些东西塞进ConfigurationSection了:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
注意这里的ConfigurationProperty这个Attribute,里面的字符串就是你在配置节里的那个element group节点。当然如果你想省事的话你可以定义为"",这样上面的配置文件就变为:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
最后便是如何使用了:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
转载于:https://www.cnblogs.com/gamix/archive/2007/01/29/633403.html
使用ConfigurationManager来写自己的配置文件相关推荐
- python创建配置文件_如何写python的配置文件
一.创建配置文件 在D盘建立一个配置文件,名字为:test.ini 内容如下: [baseconf] host=127.0.0.1 port=3306 user=root password=root ...
- python怎么创建配置文件_如何写python的配置文件
一.创建配置文件 在D盘建立一个配置文件,名字为:test.ini 内容如下: [baseconf] host=127.0.0.1 port=3306 user=root password=root ...
- 项目管理sod_将复杂查询写到SQL配置文件--SOD框架的SQL-MAP技术简介
可以参考作者的<SOD框架"企业级"应用数据架构实战>了解本文相关的内容. 引言 今天看到一片热门的博客, .NET高级工程师面试题之SQL篇 ,要求找出每一个系的最高 ...
- php自己写配置项,创建配置文件 用PHP写出自己的BLOG系统 2
先看看效果图 创建前文件界面 创建配置文件后界面,会提示不能重复安装 下面就上代码吧,html界面的代码就不上了,直接上PHP代码吧 复制代码代码如下: /* FILE:install.php Aut ...
- 易语言写c盘配置文件,易语言写配置文件的方法
易语言编程开发环境的诞生引领了一个编程新时代的到来.它以其本土化.易用化.开发速度快等优点迅速被广大编程爱好者所认可和接受."配置文件"这个术语相信大家都很熟悉了,因为日常生活中随 ...
- springboot 两个src_springboot application.properties 写多个配置文件怎么写
展开全部 springboot application.properties 写多32313133353236313431303231363533e78988e69d8331333365643661个 ...
- 易语言写c盘配置文件,易语言 读写配置项(ini配置文件)源码
简介 易语言 读写配置项(ini配置文件)源码 源码 .版本 2 .支持库 iext .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 .局部变量 账号, 文本型 .局部变量 密码, 文本型 ...
- WinForm 读写配置文件
读配置文件 方法(1) //ConfigurationManager.RefreshSection("appSettings"); string settingValue = Co ...
- 重构机房收费系统总结1之配置文件+反射+抽象工厂
在重构机房收费系统之前就一直听说这次重构要用反射+配置文件.深远的作用不知道,可是在这次重构用到,目的还是挺明白的:就是为了更换数据时方便,遵循开放-封闭原则.攻克了可维护和可扩展的问题. 以下就以机 ...
- .Net Core 全局配置读取管理方法 ConfigurationManager
最近在学习.Net Core的过程中,发现.Net Framework中常用的ConfigurationManager在Core中竟然被干掉了. 也能理解.Core中使用的配置文件全是Json,不像F ...
最新文章
- vsftp 550,227 报错解决
- Mysql找不到mysql.sock怎么办?
- 编写一个程序实现方法的覆盖java_编写Java程序代码必须先声明一个____,然后在其中编写实现需求的业务代码。...
- 省选+NOI 第八部分 数论
- linux PCI驱动调用字符设备驱动方式
- 线程堆栈大小 pthread_attr_setstacksize 的使用【原创】
- 面试官:Object o = new Object() 占用了多少字节?
- 在Ubuntu 18.04上安装MongoDB
- 数据结构与算法--图的概念
- VC 2010 Express下安装OpenCV2.4.4 遇到的问题
- 【EF】EF框架 Code First Fluent API
- 【HDU - 4794】Arnold【斐波那契数列循环节】
- 计算机应用离散数学,结合计算机应用的离散数学教学研究.pdf
- Python学习笔记—— python基础 1. 变量的输出
- 分布式 | zabbix 监控 dble
- matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
- 使用putty下载文件
- spark sql 之 collect_set collect_list 后WrappedArray 取值
- 15 python的文件操作
- 元器件的温度特性(电容、电感、晶振等)
热门文章
- java如何代码生成矩形_Java中能不能创建不是矩形的窗口。
- 设计模式之GOF23外观模式
- java 解压文件夹_java新人,在学习解压缩文件时,解压文件后,里面的文件变文件夹...
- 解决wordpress前后台非常卡的几个方法
- php 面向对象编程(class)之从入门到崩溃 高级篇
- 规则引擎drools java,spring,spring-boot,drools使用案例
- ubuntu 20 /CentOS 8.x/MAC 系统 中安装GO LANG(GO语言)
- ChannelHandler 接口继承关系图
- Android 控件 之 Adapter 基础讲解
- java中eq、ne、gt、lt、ge、le分别代表含义