您的位置:首页 > 其它

IConfigurationSectionHandler 接口的用法

2007-07-13 16:32 281 查看
对asp.net 的配置文件即熟悉又陌生,熟悉的是天天在使用,陌生是实现原理还是个糊涂的概念.
今天终于花了点时间了解一下IConfigurationSectionHandler 接口的用法 ,引以入门.
首先建立一 RobsunConfigSectionHandler 专案,代码如下 :


namespace RobsunConfigSectionHandler




...{


public class RobsunParaSectionHandler:IConfigurationSectionHandler




...{




IConfigurationSectionHandler 成員#region IConfigurationSectionHandler 成員




public object Create(object parent, object configContext, XmlNode section)




...{


RobsunPara para = new RobsunPara();




foreach (XmlNode xn in section.ChildNodes)




...{


switch (xn.Name)




...{


case "path":


para.Path = xn.SelectSingleNode("@value").InnerText;


break;


case "companyName":


para.CompanyName = xn.SelectSingleNode("@value").InnerText;


break;


case "isPrivate":


para.IsPrivate = bool.Parse(xn.SelectSingleNode("@attribute").InnerText);


break;


}


}




return para;


}




#endregion


}


}

RobsunParaSectionHandler类实现 IConfigurationSectionHandler 接口.

RobsunPara类(实际就是参数类)的代码如下:


public class RobsunPara




...{




codecode#region code


private string _path = "";


private string _companyName = "";


private bool _isPrivate = false;




public string Path




...{




get ...{ return _path; }




set ...{ _path = value; }


}




public string CompanyName




...{




get ...{ return _companyName; }




set ...{ _companyName = value; }


}




public bool IsPrivate




...{




get ...{ return _isPrivate; }




set ...{ _isPrivate = value; }


}


#endregion


}

ConfigurationHander类的创建工作已完成,次handler的工作必须配合如下配置文件的格式(其实的配置文件依赖handler).这里是web.config(三种配置文件任一,web.config,App.config,machine.config ,前两种会覆盖machine.config,当然这里是没法子在App.config配置了 ~Q~ )


<configuration>




<configSections>


<sectionGroup name="robsunGroup">


<section name="robsunSection" type="RobsunConfigSectionHandler.RobsunParaSectionHandler,RobsunConfigSectionHandler"/>


</sectionGroup>


</configSections>




<robsunGroup>


<robsunSection>


<path value="NONE"/>


<companyName value="Robsun"/>


<isPrivate attribute="true"/>


</robsunSection>


</robsunGroup>




<appSettings/>


<connectionStrings/>


<system.web>


...

准备代码都已完成.剩下的就是拿来用了....
这里为了简单起见,就直接在page_load里实现了:


public partial class _Default : System.Web.UI.Page




...{


protected void Page_Load(object sender, EventArgs e)




...{


RobsunConfigSectionHandler.RobsunPara para


= ConfigurationManager.GetSection("robsunGroup/robsunSection") as RobsunConfigSectionHandler.RobsunPara;




Response.Write("CompanyName: " + para.CompanyName + "<br>");


Response.Write("Path: " + para.Path + Environment.NewLine + "<br>");


Response.Write("isPrivate: " + para.IsPrivate.ToString() + "<br>");


}


}

以上只是对IConfigurationSectionHandler 接口的简单事例.配置文件的强大也只有在以后的工作中慢慢体会了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: