原文:http://www.cnblogs.com/yangyp/archive/2013/04/09/3008500.html

ASP.NET应用程序中,很大部分重要功能可以通过web.config来配置。其中有一个<configSection>的节点,里面包含了.net定义的配置节处理程序与配置节之间的关联。也可以自定义节点和自定义配置节点的处理程序。如图所示:

Web.config中自定义配置节点(转)

最近项目中使用到了自定义节点,简单总结下:在web.config中的<configSection>节点中添加要自定义的节点<section>,指定name为获取自定义配置的类实体的类名(AppAplication),Type为自定义节点处理程序的 (程序集.类名,程序集) 格式,如web.config中的自定义配置节点示例图中所示:

Web.config中自定义配置节点(转)

设计读取自定义配置节点的类结构,类关系视图如下:

 Web.config中自定义配置节点(转)

CmfuConfig为对外使用web.config配置节点的类,包含一个静态属性Instance,通过调用AppConfig泛型类得到对应类型的对象(AppAplication:获取可以再.cs中配置web.config节点的对象(AppSetting)的类),通过获取到的AppAplication,获取字段AppSetting(返回此对象),然后就可以获取到AppSetting的所有字段了。注意:会优先从web.config获取,web.config没有配置的,才会从本地的AppSetting类中获取配置值。

每个类的代码示例如下:

namespace SectionTest
{
    public class CmfuConfig
    {
        public static AppAplication Instance
        {
            get
            {
                return AppConfig<AppAplication>.Instance;
            }
        }
    }
}
CmfuConfig.cs
namespace SectionTest
{
    public class AppConfig<T>
    {
        public static T instance = default(T);

        public static T Instance
        {
            get
            {
                if (instance == null||instance.Equals(default(T)))
                {
                    instance = (T)ConfigurationManager.GetSection("AppAplication");
                }
                return instance;
            }
            set
            {
                instance = value;
            }
        }
    }
}
AppConfig.cs
namespace SectionTest
{
    public class AppAplication
    {
        public AppSetting AppSetting = new AppSetting();
    }
}
AppAplicaton.cs

相关文章: