zoukankan      html  css  js  c++  java
  • 基础才是重中之重~用好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);
       }
    复制代码

    结果如下:

  • 相关阅读:
    [LeetCode82]Remove Duplicates from Sorted List II
    IOS开发常见BUG和一些小技巧(PS:耐心看完,很实用)
    IOS-一步一步教你自定义评分星级条RatingBar
    iOS手机淘宝加入购物车动画分析
    iOS mac终端下的SQL语句
    iOS SQLite 数据库迁移
    iOS 判断两个日期之间的间隔
    iOS应用架构谈 本地持久化方案及动态部署
    用 SQLite 和 FMDB 替代 Core Data
    ios 消除 字符串 首尾空格
  • 原文地址:https://www.cnblogs.com/sjqq/p/7619864.html
Copyright © 2011-2022 走看看