自定义节的配置文件 myCustom.config 如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<configSections>

<section name="myCustomSection" type="CustomConfig.MyCustomSection, CustomConfig"/>

</configSections>

<myCustomSection myFirstSetting="1" mySecondSetting="A" />

</configuration>

其中 section 节的书写格式:

<section name="section name"

type="configuration section handler class, assembly file name, version, culture, public key token"

allowDefinition= "Everywhere|MachineOnly|MachineToApplication|MachineToWebRoot"

allowLocation="True|False"

restartOnExternalChanges="True|False" />

关于configSections 的 section 元素(常规设置架构)请参考

http://msdn.microsoft.com/zh-cn/library/ms228245(VS.80).aspx 中有较详细的解释。

那么,我们如何来通过程序读取自定义的配置参数及值呢?其实很简单我们只需要从ConfigurationSection 派生出自己的类即可。程序如下:

using System.Configuration;

namespace CustomConfig

{

public sealed class MyCustomSection : ConfigurationSection

{

public MyCustomSection(){

}

[ConfigurationProperty("myFirstSetting")]

public long MyFirstSetting

{

get

{

return (long)this["myFirstSetting"];

}

set

{

this["myFirstSetting"] = value;

}

}

[ConfigurationProperty("mySecondSetting")]

public string MySecondSetting

{

get{

return (string)this["mySecondSetting"];

}

set{

this["mySecondSetting"] = value;

}

}

}

}

仅需要在表示配置节的属性的前边加上ConfigurationProperty 属性标记即可。

测试程序如下:

static void Main(string[] args)

{

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

fileMap.ExeConfigFilename = @"myCustom.config";

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(

fileMap, ConfigurationUserLevel.None);

MyCustomSection section = config.Sections["myCustomSection"] as MyCustomSection;

if (section != null)

{

Console.WriteLine("My first Setting: {0}", section.MyFirstSetting);

Console.WriteLine("My second setting: {0}", section.MySecondSetting);

}

Console.ReadKey();

}

程序输出:

My first Setting: 1

My second setting: A

在属性标记中还可以设置默认值、最小值、最大值等等。如:

[ConfigurationProperty("myFirstSetting", DefaultValue = (long)1, IsRequired = true)]

[LongValidator(MinValue = 1, MaxValue = 10000, ExcludeRange = false)]

设置 myFirstSetting 的默认值是1 且是必须的。LongValidator 设置配置文件中值的范围只能是在[1-10000]之间。

[ConfigurationProperty("mySecondSetting", DefaultValue="A",IsRequired=true)]

[StringValidator(InvalidCharacters="~!@#$%^&*(){}/;'|\\",MinLength=1,MaxLength=60)]

StringValidator中设置有无效的字符及字符串的长度。

代码文件:

Xing 学习笔记 2008-6-24整理

转载于:https://www.cnblogs.com/xingquan/archive/2011/03/24/1994465.html

dotNET中创建自定义的配置节相关推荐

  1. Web.config中创建自定义配置节

    Web.config文件可谓是每个ASP.NET站点必不可少的一个文件,其中记录了网站的各种配置.一些比较静态但是又可能变更的数据可以放在web.config中,已有的appSettings配置节便有 ...

  2. 在OpenCart中创建自定义送货方式:第一部分

    尽管OpenCart核心本身提供了许多有用的运送方法,但始终有机会需要创建自己的运送方法. 另一方面,作为一名Web开发人员,您将始终尝试探索自己选择的框架,以了解如何创建自己的自定义内容! 在本系列 ...

  3. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  4. NI Multisim元件库:在Multisim中创建自定义元器件

    转载于: http://www.ni.com/tutorial/3173/zhs/ 概览 「在Multisim中创建自定义元器件」与「在 NI Ultiboard中创建自定义元器件」为您提供了关于如何 ...

  5. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  6. 【实用工具】之在VS中使用自定义工具配置nasm/yasm

    1 在VS中使用自定义工具配置nasm/yasm 1.1 方法一(参考开源工具)  可参考开源工具,具体做法是: (1).下载x264源码 (2).在windows下使用cmake便可产生vs的解决方 ...

  7. 微软word开机自启动_如何在Microsoft Word中创建自定义封面

    微软word开机自启动 A great cover page draws in readers. If you use Microsoft Word, you're in luck, because ...

  8. 如何在ASP.NET Core中创建自定义AuthorizeAttribute?

    本文翻译自:How do you create a custom AuthorizeAttribute in ASP.NET Core? I'm trying to make a custom aut ...

  9. 如何在WordPress中创建自定义主页

    Often users ask us if it's possible to create a custom homepage in WordPress. 用户经常问我们是否可以在WordPress中 ...

最新文章

  1. php上传图文教程,PHP 上传图片、文件的方法
  2. 浏览器控件JxBrowser 6.18发布 | 极大增强了安全性
  3. LIKE语句也可以这样写
  4. java 随机数 【指定范围】
  5. 记一次在LAMP中遇到的问题
  6. 黑盒测试法——等价类划分法(修改版)
  7. graphql 有必要吗_您准备好观看GraphQL了吗?
  8. screnc加密后文件不能执行_芯片加密后还能不能再次使用【详细介绍】
  9. 信息学奥赛一本通(2032:【例4.18】分解质因数)
  10. UILabel和NSAttributedString那些事
  11. 电商设计师(美工)必备的素材网站|优图!
  12. Word论文公式居中、编号右对齐方法
  13. 给力的网络 有道的性能——802.11n与WLAN
  14. html div 边框只显示右侧,CSS-只显示角边框
  15. 《软技能—代码之外的生存指南》
  16. 本草纲目pdf彩图版下载_本草纲目pdf下载|本草纲目彩色插图版PDF完整版_ - 极光下载站...
  17. ubuntu16.04编译ORBSLAM2问题解决
  18. 【idea】IDEA常用断点详解
  19. 蓝色经典钢琴-Cinesamples Piano In Blue v2.3b Kontakt
  20. fabric框架学习

热门文章

  1. 数据分析方向之连续性的价值分析
  2. 16进制转base64_《蹲坑学K8S》之19-5:二进制部署Calico网络
  3. 2.吴恩达机器学习课程-作业2-逻辑回归
  4. JWT 教程_1 SpringBoot与JWT整合
  5. Spring 框架简单介绍
  6. vue.js多页面开发 webpack.config.js 配置方式
  7. java使用jeids实现redis2.6的HyperLogLog数据结构的操作
  8. HTML常用特殊符号集
  9. Android学习系列(7)--App轮询服务器消息
  10. ios7 JavaScriptCore.framework