首页 > 代码库 > .net如何自定义config配置文件节点

.net如何自定义config配置文件节点

本文转载: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", DefaultValuehttp://www.mamicode.com/= "", IsRequired = true, IsKey = false)]        public string WebName        {            get { return (string)this["WebName"]; }            set { this["WebName"] = value; }        }        /// <summary>        /// 网站域名        /// </summary>        [ConfigurationProperty("DoMain", DefaultValuehttp://www.mamicode.com/= "", 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="http://www.mamicode.com/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);   }

结果如下:

.net如何自定义config配置文件节点