对于小型项目来说,配置信息可以通过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);}

结果如下:

基础才是重中之重~用好configSections让配置信息更规范相关推荐

  1. 基础才是重中之重~再说面向接口的编程

    回到目录 之前在我的文章中有对接口进行过讲解,但感觉讲的还是不够清晰,不够利针见血,这次我把面向接口的编程里,自认为比较核心的两点说一下: 接口详细介绍请看我的这篇文章 基础才是重中之重~为什么C#有 ...

  2. 基础才是重中之重~通过人类的生活来学习Delegate

    一个人(people),在他60岁之后,就宣布进入晚年了,在这个期间要多注意身体,多体检. namespace NET基础才是重中之重{/// <summary>/// 人类/// < ...

  3. 基础才是重中之重~类是怎么执行的

    回到目录 对于一个程序员来说,有必要知道一个概念的同时也解它的执行过程,这样对于写出更好更安全的程序是有帮助的. 大牛们不是一天就成为大牛的,而是经过一步一步的实践,不断的知识的积累才成为大牛的,呵呵 ...

  4. 基础才是重中之重~方法override详解

    回到 目录 之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享. 方法的override,即方法的覆写或者重写 ...

  5. 基础才是重中之重~何为原子化操作

    占占定义: 原子化操作,操作原子化,这在软件开发中经常被听到,那到底什么是操作原子化呢,其实从字面上不难理解,原子化就是一体化,整体化,原子化操作就是将多个操作组合在一起,要么这个组合一起发生,要么一 ...

  6. 第二十二回  基础才是重中之重~ThreadStatic静态字段在每个线程里的唯一性

    static修饰符我们不会陌生,它代表静态,可以修饰你的类,方法,字段和属性等等,今天主要说一个为静态字段加ThreadStatic特性会给程序代来什么样的变化.静态字段static field,我更 ...

  7. 基础才是重中之重~DictionaryK,V里V的设计决定的性能

    回到目录 字典对象Dictionary<K,V>我们经常会用到,而在大数据环境下,字典使用不当可能引起性能问题,严重的可能引起内在的溢出! 字典的值建议为简单类型,反正使用Tuple< ...

  8. 基础才是重中之重~.net中的显式事务与隐式事务

    回到目录 .net中的事务可以分为显式的和稳式的,显式的就是说需要我们手动去指定事务的提交和回滚,而稳式的是.net帮助我们进行管理的,当你的事务代码段没有发生异常时,它会帮助我们进行提交,反之,进行 ...

  9. 基础才是重中之重~开发人员应用学会用throw

    回到目录 无论是.net还是java,在开发程序时都难免会用到throw关键字,对于初学者一般会认为它与try...catch捆绑在一起,这当然是错误的,事实上,throw的一个最重要的作用就是: 让 ...

最新文章

  1. 【linux】Matchbox(一):启动脚本
  2. 再见!Kafka决定弃用Zookeeper...
  3. c++面向对象高级编程 学习二 带指针的类
  4. HP5200打印机从控制面板手动配置TCP/IP 参数
  5. java版spring cloud+spring boot+redis社交电子商务平台-spring-cloud-config
  6. 继承(引用~析构~virtual)
  7. python字符串描述错误的_Python字符串错误字符
  8. bzoj 3632: 外太空旅行(随机)
  9. C++调用其他语言(C#、java、python)
  10. python基础(16):学生信息管理系统——Python编写(附全部代码)
  11. 持久层框架JPA与Mybatis该如何选型
  12. 消防信号总线原理_消防二总线的构成以及工作原理?
  13. 谷歌大脑组合模型霸榜 SuperGLUE,什么模型这么高?
  14. 弗雷歇距离的原理及python代码实现(动态规划)
  15. Kubelet Eviction Manager工作机制
  16. weico.cc微博链接
  17. AEAI Portlet开发心得
  18. Tailwind 真香
  19. 2023年上海理工大学材料与化工专业考研成功上岸前辈复习经验指导
  20. 谷歌adwords教程_如何将Google Analytics(分析)与AdWords关联

热门文章

  1. hadoop 配置项的调优
  2. 【每日随笔】使用 you-get 获取网页中的视频资源 ( Python 环境安装 | you-get 工具使用 )
  3. 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )
  4. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )
  5. 【Flutter】屏幕像素适配方案 ( flutter_screenutil 插件 )
  6. 【Netty】Netty 异步任务模型 及 Future-Listener 机制
  7. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
  8. socket_循环发送消息
  9. Spring MVC中获取当前项目的路径
  10. File类 判断功能和获取功能