实现IConfigurationSectionHandler接口来编写自定义配置

发表时间:2008-4-4 10:55:00

代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Xml;


namespace Beyondbit.Portal.ConfigService {
    public class TopMenuConfigItem {
        public string Text;
        public string Value;
        public string Url;
        public string Description;
    }

    public class TopMenuConfig : IConfigurationSectionHandler {

        private IList<TopMenuConfigItem> topMenus;
        public IList<TopMenuConfigItem> TopMenus {
            get {
                return topMenus;
            }
        }

        public static TopMenuConfig Instance() {
            return ConfigurationManager.GetSection("TopMenuConfig") as TopMenuConfig;
        }

        #region IConfigurationSectionHandler Members

        object IConfigurationSectionHandler.Create(object parent, object configContext, XmlNode section) {
            XmlNode node = section;
            topMenus = new List<TopMenuConfigItem>(node.ChildNodes.Count);

            TopMenuConfigItem m = null;
            foreach (XmlNode n in node.ChildNodes) {
                if (n.NodeType != XmlNodeType.Comment) {
                    m = new TopMenuConfigItem();
                    m.Description = n.Attributes["Description"].Value;
                    m.Text = n.Attributes["Text"].Value;
                    m.Url = n.Attributes["Url"].Value;
                    m.Value = n.Attributes["Value"].Value;
                    topMenus.Add(m);
                }
            }

            return this;
        }

        #endregion
    }
}


Web.config如下:
<?xml version="1.0"?>
<configuration>
 </configSections>
    <section name="TopMenuConfig" type="Beyondbit.Portal.ConfigService.TopMenuConfig,Beyondbit.Portal.ConfigService" />
  </configSections>

<TopMenuConfig>
    <topMenu Text=" 邮件 " Value="ExchangeMail" Url="http://mail.pudong.sh/owa/?cmd=contents" Description="http://www.blog.com.cn/ 邮 件 " />
    <topMenu Text=" 通讯录 " Value="link" Url="http://contact.pudong.sh/web/Contact/ContactMain.aspx" Description="http://www.blog.com.cn/通讯录" />
    <topMenu Text=" 共享日历 " Value="calendar" Url="http://calendar.pudong.sh/web/calendar/calendarmain.aspx" Description="http://www.blog.com.cn/共享日历" />
    <topMenu Text=" 短信息 " Value="sms" Url="http://sms.pudong.sh/Web/User/SmsSend.aspx" Description="http://www.blog.com.cn/短信息" />
    <topMenu Text=" 会议通知 " Value="meeting" Url="http://meeting.pudong.sh/tasks/tasklist.aspx" Description="http://www.blog.com.cn/会议通知" />
  </TopMenuConfig>
  <appSettings />
 <system.web>
 </system.web>
</configuration>

原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1446246.html