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

简介:

对于小型项目来说,配置信息可以通过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让配置信息更规范,如需转载请自行联系原博主。

目录
相关文章
|
7月前
|
项目管理
深入解析PMP项目内部运营环境
在项目管理领域,PMP认证是一项备受尊敬的资格,它强调了对项目内部运营环境的深刻理解。PMP专业人士不仅需要了解项目管理的基本原则,还需要熟悉项目内部运营环境的方方面面。本文将深入探讨PMP项目内部运营环境的重要性以及如何有效管理这一环境。
|
8月前
|
监控 前端开发 持续交付
带你入门前端工程(二):统一规范(二)
带你入门前端工程(二):统一规范(二)
115 0
|
8月前
|
前端开发 JavaScript 搜索推荐
带你入门前端工程(二):统一规范(一)
带你入门前端工程(二):统一规范
96 0
|
9月前
|
供应链 前端开发 测试技术
供应链管理系统(SCM)开发源码规则解析
供应链管理系统(SCM)开发源码规则解析
|
11月前
|
测试技术 数据安全/隐私保护 索引
DAO社区治理系统模式开发规则详情 | DAO社区治理系统开发源码示例(Python语言版)
DAO(Data Access Object)社区治理模式是一种去中心化的社区治理模式,它将权力下放到社区中,让社区成员自主决策、自我管理,从而实现社区的自主治理。在DAO社区治理模式中,权力下放到社区中,社区成员可以自由地发表自己的意见和建议,并且能够直接参与到社区的决策过程中。
|
数据采集 存储 安全
数据标准体系框架规划【参考】
随着公司数字化转型的深入建设和数字化水平的提升,公司积累了海量的数据信息。
数据标准体系框架规划【参考】
|
数据采集 存储 监控
谈谈如何制定完整动态的数据治理框架
作为一个概念,数据治理已经存在了几十年。到了20世纪80年代,计算机的繁荣导致了旨在处理数据质量和元数据管理等问题的技术的出现,这些技术通常以部门为基础,以支持数据库营销或数据仓库工作。
谈谈如何制定完整动态的数据治理框架
|
Swift iOS开发
SwiftLint 自动规范代码工具(下)
SwiftLint 自动规范代码工具(下)
499 0
SwiftLint 自动规范代码工具(下)
|
人工智能 Java 编译器
SwiftLint 自动规范代码工具(上)
SwiftLint 自动规范代码工具(上)
410 0
SwiftLint 自动规范代码工具(上)
|
SQL JSON Java
Java开发业务接口规范
规范点 说明 推荐方式 等级 文档唯一性 文档出处来源(人员和设备)必须统一,建议文档服务器,统一发布人。   重要 接口环境 要明确给出各个环境的调用地址。
4708 0