本文转载: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. 机器学习算法与Python实践之(二)支持向量机(SVM)初级

    机器学习算法与Python实践之(二)支持向量机(SVM)初级 机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/ ...

  2. [二分匹配]URAL1721Two Sides of the Same Coin

    题意:给n个人,每个人都有3个参数,分别是名字,能做的事(a:statements  b:testdate  a.b都可以:anything),Rank 要求:一个人只能做一个事件,要两个人Rank相 ...

  3. gdb 调试c/c++的一些小技巧

    ptype obj/class/struct 查看obj/class/struct的成员,但是会把基类指针指向的派生类识别为基类   set print object on 这个选项可以看到派生对象的 ...

  4. Yii url createUrl redirect相关

    一篇文章: 在yii中明明白白生成网址: 在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接.下面对Yii中的URL生成做了一个总结.提示:以下controllerX代表控制器X,act ...

  5. Hadoop MapReduce 二次排序原理及其应用

    关于二次排序主要涉及到这么几个东西: 在0.20.0 以前使用的是 setPartitionerClass setOutputkeyComparatorClass setOutputValueGrou ...

  6. MySQL information_schema表查询导致内存暴涨

    case:下面的一条sql语句,导致mysql实例内存暴涨: select * from tables where table_name not in(select table_name from p ...

  7. bzoj3878

    当初只会暴力,现在差不多觉得水了显然离线处理,对输入的数排序然后会发现不管怎么修改都是结果总是单调不降的对于每次处理,我们只要找到那段越界的即可显然上线段树,话说jsoi这么喜欢线段树?下面在bzoj ...

  8. cgi ISAP sapi等

    1.CGI和FastCGI是apache处理php脚本的其中两种工作模式,还有ISAPI,SAPI等 2.而php-fpm并不是一种工作模式,而是一个PHP在FastCGI模式运行下的进程管理器,全称 ...

  9. poj 1167 简单搜索

    这题主要是注意好限定的条件 条件1:每个公交车都至少要到达两次 条件2:公交车相同时间和相同间隔是属于两种车辆 条件3:不同的车可能到达时间相同 上述都是深搜的重要条件: #include<al ...

  10. Sharepoint 2010 根据用户权限隐藏Ribbon菜单

    转:http://xiangzhangjun2006.blog.163.com/blog/static/44140966201211715416178/   1.使用SPD打开站点,并打开母版页.默认 ...