1. 程式人生 > >基礎才是重中之重~用好configSections讓配置信息更規範

基礎才是重中之重~用好configSections讓配置信息更規範

base too property ftl als clas rdl eoj per

對於小型項目來說,配置信息可以通過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讓配置信息更規範