任务:
读取下面xml中的某些信息(该XML从web.config中摘取):
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称"
allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true"/>
</configSections>
<connectionStrings/>
<RemotingCompress CompressLevel="xuminrong" CompressCacheSize="79" UnCompressCacheSize="79" MinCompressSize="0"/>
<appSettings>
<!-- 数据库服务器名称 -->
<add key="TestConfiguate" value="这是一个测试"/>
</appSettings>
</configuration>
实现:
1:RemotingCompressSection 类:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Confige
{
public class RemotingCompressSection : System.Configuration.ConfigurationSection
{
[ConfigurationProperty("CompressLevel")]
public string CompressLevel
{
get
{
return (string)this["CompressLevel"];
}
set
{
this["CompressLevel"] = value;
}
}
[ConfigurationProperty("CompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
public string CompressCacheSize
{
get
{
return (string)this["CompressCacheSize"];
}
set
{
this["CompressCacheSize"] = value;
}
}
[ConfigurationProperty("UnCompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
public string UnCompressCacheSize
{
get
{
return (string)this["UnCompressCacheSize"];
}
set
{
this["UnCompressCacheSize"] = value;
}
}
}
}
2: 前台页面:_Default
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Confige;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RemotingCompressSection obj = new RemotingCompressSection();
Response.Write(obj.CompressLevel + obj.CompressCacheSize + obj.UnCompressCacheSize);
Response.WriteSystem.Configuration.ConfigurationSettings.AppSettings["TestConfiguate"]);
}
}
3:分析
1)RemotingCompressSection 类必须继承自System.Configuration.ConfigurationSection。
2)对<Add/>元素的读取,与1.1中没有什么改变。
3)注意大小写敏感。
4)关于定制特性ConfigurationProperty的问题:自己去查找相关资料。
5)<section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称" ...
解析:Confige.RemotingCompressSection:解析该配置文件的类名称
程序集名称:解析类所在的程序集的名称。
RemotingCompress:对应于<RemotingCompress/>元素,有点像元素声明。
4:疑问
1)找不到命名空间。
解决:要想要命名空间,自己加。
2)找不到程序集名称。
解决:至今没有解决。
参考文章:
http://xrinehart.cnblogs.com/archive/
(革新:NET20的自定义配置文件体系初探.doc)