VS2012 常用web.config配置解析之自定义配置节点

在web.config文件中拥有一个用户自定义配置节点configSections,这个节点可以方便用户在web.config中随意的添加配置节点,让程序更加灵活(主要用于第三方插件的配置使用)

自定义节点是一个XML格式的数据,我们可以在节点中灵活的配置自己的数据,下面是一个简单数据的例子

1.先看一下web.config中的配置结构

1
2
3
4
5
6
7
8
<configSections>
  <section name="modelsection" type="Amy.WebUI.Plugin.ConfigSections.ModelSectionHandler,Amy.WebUI"/>
</configSections>
 
<modelsection>
  <title>测试</title>
  <content>测试</content>
</modelsection>

 2.为了实现自定义配置节点的解析,我们需要实现接口IConfigurationSectionHandler

1
2
3
4
5
6
7
8
9
10
11
12
public class ModelSectionHandler : IConfigurationSectionHandler
{
    /// <summary>
    /// 解析配置文件信息
    /// </summary>
    public object Create(object parent, object configContext, XmlNode section)
    {
        var json = section.ToJsonByJsonNet().GetJsonValue("modelsection");
 
        return json.ToObjectByJsonNet<ModelConfig>();
    }
}

 3.ModelConfig类为了防止消耗IO资源,做了一个单例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class ModelConfig
{
    private static ModelConfig instance;
    private static readonly object syncObject = new object();
 
    private ModelConfig() { }
 
    public static ModelConfig GetInstance()
    {
        if (instance == null)
        {
            lock (syncObject)
            {
                if (instance == null)
                {
                    instance = (Plugin.ConfigSections.ModelConfig)System.Configuration.ConfigurationManager.GetSection("modelsection");
                }
            }
        }
 
        return instance;
    }
 
 
    public string Title { get; set; }
 
    public string Content { get; set; }
}

 4.读取数据,很简单及类的静态方法调用就OK;var config = Plugin.ConfigSections.ModelConfig.GetInstance();

posted @   荒古禁地  阅读(1010)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示