本文转载:http://www.cnblogs.com/lori/archive/2013/04/03/2997617.html

对于小型项目来说,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名称很容易写错,这时,我们有几种解决方案

1 自己开发一个配置信息持久化类,用来管理配置信息,并提供面向对象的支持
2 使用.net自带的configSections,将配置信息分块管理,并提供实体类,便于开发人员友好的去使用它

本文主要说说第二种方案,它由实体类,实体类工厂及配置文件三个部分,看代码:

实体类设计:

namespace Configer
{
/// <summary>
/// 网站信息配置节点
/// </summary>
public class WebConfigSection : ConfigurationSection
{
/// <summary>
/// 网站名称
/// </summary>
[ConfigurationProperty("WebName", DefaultValue = "", IsRequired = true, IsKey = false)]
public string WebName
{ get { return (string)this["WebName"]; }
set { this["WebName"] = value; }
}
/// <summary>
/// 网站域名
/// </summary>
[ConfigurationProperty("DoMain", DefaultValue = "", IsRequired = true, IsKey = false)]
public string DoMain
{ get { return (string)this["DoMain"]; }
set { this["DoMain"] = value; }
} }
}

实体工厂类设计,主要用来生产实体配置信息

namespace Configer
{
/// <summary>
/// 网站配置信息工厂
/// </summary>
public class WebConfigManager
{
/// <summary>
/// 配置信息实体
/// </summary>
public static readonly WebConfigSection Instance = GetSection(); private static WebConfigSection GetSection()
{
WebConfigSection config = ConfigurationManager.GetSection("WebConfigSection") as WebConfigSection;
if (config == null)
throw new ConfigurationErrorsException();
return config;
}
}
}

而最后就是.config文件了,它有configSections和指定的sections块组成,需要注意的是configSections必须位于configuration的第一个位置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="WebConfigSection" type="Configer.WebConfigSection, test"/>
</configSections>
<connectionStrings>
<add name="backgroundEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\sqlexpress;Initial Catalog=background;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings> <WebConfigSection WebName="占占网站" DoMain="www.zhanzhan.com" />
<appSettings>
<add key="site" value="www.zzl.com"/> </appSettings>
</configuration>

以上三步实现后,我们就可以调用了,呵呵

  static void Main(string[] args)
{
Console.WriteLine(System.Configuration.ConfigurationManager.AppSettings["site"]);
Console.WriteLine(WebConfigManager.Instance.DoMain);
Console.WriteLine(WebConfigManager.Instance.WebName);
}

结果如下:

aaarticlea/png;base64,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" alt="" />

.net如何自定义config配置文件节点的更多相关文章

  1. C# 读取app.config配置文件节点键值,提示"配置系统未能初始化" 错误的解决方案

    MSDN里写到, 如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素. 将自己添加的appSettin ...

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

    前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文 ...

  3. C#自定义配置文件节点

    老实说,在以前没写个自定义配置节点之前,我都是写到一个很常用的节点里面,就是appSettings里add,然后再对各个节点的value值进行字符串分割操作,根据各种分割字符嵌套循环处理,后来看到一些 ...

  4. C# 如何获取自定义的config中节点的值,并修改节点的值

    现定义一个方法 DIYConfigHelper.cs using System; using System.Xml; using System.Configuration; using System. ...

  5. 在.net中读写config文件的各种方法(自定义config节点)

    http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - ...

  6. Winform中对自定义xml配置文件进行Xml节点的添加与删除

    场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...

  7. Winform中自定义xml配置文件后对节点进行读取与写入

    场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...

  8. springboot读取自定义配置文件节点

    今天和大家分享的是自定义配置信息的读取:近期有写博客这样的计划,分别交叉来写springboot方面和springcloud方面的文章,因为springboot预计的篇章很多,这样cloud的文章就需 ...

  9. Web.config配置文件详解

    整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml v ...

随机推荐

  1. [杂题]CSUOJ1276 Counting Route Sequence

    题目链接 题意:从1号点走到n号点(每条边只能走一次, 两结点间的边数必定为奇数) 问 经过结点不同顺序的方式有多少种(如1->2->3->4和1->3->2->4 ...

  2. UVA 10273 Eat or Not to Eat?

    这个题目一直以为是要用图论知识来做,可是一点建图的思绪都没有,后来知道暴力便可破之.由于牛的产奶周期最大为10,1.2.3.....10的最小公倍数是MT = 2520,所以把MT作为最大的周期,然后 ...

  3. DHTMLX 前端框架 建立你的一个应用程序 教程(七)-- 添加筛选功能

    表格的过滤筛选 我们在每列第一行添加一个文本,用做数据的条件筛选. 我们还提供服务端的筛选 ,当有大量数据时 , 我们可以使用dhtmlxConnector 进行后台数据的筛选. 添加过滤器到表格列中 ...

  4. Android:双层嵌套ViewPager并添加单击事件

    仿网易新闻: 实现原理: 上面的导航栏是一个自定义的ViewGroup(类似ActionBar) 中间内容层是ViewPager套fragment实现左右切换滑动 fragment里面的布局是一个Li ...

  5. matlab numpy equivalents

    THIS IS AN EVOLVING WIKI DOCUMENT. If you find an error, or can fill in an empty box, please fix it! ...

  6. 【HDOJ】2103 Family planning

    题目挺有意思.虽然不是很难. #include <stdio.h> int main() { unsigned int m, n, case_n; unsigned ; scanf(&qu ...

  7. 【HDOJ】1114 Piggy-Bank

    DP,先将coins按照重量排序可以优化. #include <stdio.h> #include <stdlib.h> #define MAXNUM 10005 #defin ...

  8. bzoj3796

    好像已经很久没有做后缀数组的题目,导致这种题一开始没想出来看到公共子串肯定想到后缀数组吧,但我都忘了最长公共子串怎么求了重要的性质:最长公共子串=max(h[i])名次相邻的两个后缀要分别属于s1,s ...

  9. poj2187

    求最远点对,这是一道经典的旋转卡壳的题目话说由于是前年写的,之后就没怎么研究过计算几何了……感觉都不大记得清了,来稍微回忆一下……首先最远点对一定出现在凸包上显然,然后穷举肯定不行,这时候就需要旋转卡 ...

  10. SCOI2007排列perm

    1072: [SCOI2007]排列perm Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 805  Solved: 497[Submit][Stat ...