<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
对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 接口的简单事例.配置文件的强大也只有在以后的工作中慢慢体会了.