资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> ASP.NET编程 >> Asp.Net开发 >> 文档正文
最近更新
普通文档 也谈自定义配置处理类
普通文档 Ajax中AutoComplete的使
普通文档 实战 HTTP 处理程序(HTT
普通文档 实战 HTTP 处理程序(HTT
普通文档 实战 HTTP 处理程序(HTT
普通文档 实战 HTTP 处理程序(HTT
普通文档 实战 HTTP 处理程序(HTT
普通文档 实战 HTTP 处理程序(HTT
普通文档 让 .Net 程序 脱离 .net
普通文档 让 .Net 程序 脱离 .net
推荐文章
推荐文档 七招制胜ASP.NET应用程序
推荐文档 ASP.NET+XML打造网络硬盘
推荐文档 打造通用ASP.NET数据分页
推荐文档 利用ASP.NET访问共享网络
也谈自定义配置处理类

文章作者:罗志威 录入时间:2007-9-13 来源:罗志威博客
网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。

 

在现在的WEB开发中不管是JAVA还是.NET大家对配置文件一定不会陌生.但它的实现原理对新手来说却又是那么的模糊.下面的内容是说明如何自定义处理配置类

所有能够处理配置节的类必须要实现IConfigurationSectionHandler接口,
他的作用是处理对特定的以前的配置节的访问。而IConfigurationSectionHandler接口很简单
只有一个object Create(object parent,object configContext,XmlNode section)方法.这个方法不需要主动的调用.
它是在ConfigurationSettings.GetConfig这个静态方法的时候自动调用的,也就是说,当你在程序中使用ConfigurationSettings.GetConfig来获取配置节的时候,.net会根据改配置节声明中所定义的类名和路径自动实例化配置节处理类,并调用Create方法.
相信了解Duwamish解决方案的朋友对下面这一段不会陌生:

 

1、在global.asax的Application_OnStart方法里面调用ApplicationConfiguration.OnApplicationStart静态方法,并获得应用程序根的绝对路径。
    void Application_OnStart()
{
ApplicationConfiguration.OnApplicationStart(Context.Server.MapPath( Context.Request.ApplicationPath));
string configPath = Path.Combine(Context.Server.MapPath( Context.Request.ApplicationPath ),
"remotingclient.cfg");
if(File.Exists(configPath))
RemotingConfiguration.Configure(configPath);
}
2、ApplicationConfiguration.OnApplicationStart静态方法里调用System.Configuration.ConfigurationSettings.GetConfig方法处理配置节:
        public static void OnApplicationStart(String myAppPath)
{
appRoot = myAppPath;
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("DuwamishConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("SourceViewer");
}

大家已经注意到了,程序并没有获取GetConfig返回的值,这是因为GetConfig方法会引发配置节处理程序的Create方法,
所以,只需要在Create方法中将配置值取出来就行了。
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration")
这个静态方法来读取ApplicationConfiguration配置节的时候,
会相应的类来对这个配置节进行处理。




下面是我自定义的一个配置节处理类.还忘大家指教

 

 

  1/// <summary>
  2    /// ConfigurationSetting 的摘要说明。
  3    /// </summary>

  4    public class ConfigurationSetting: IConfigurationSectionHandler
  5    {
  6        /// <summary>
  7        /// 配置
  8        /// </summary>

  9        protected NameValueCollection Settings;
 10        /// <summary>
 11        /// 默读构造函数
 12        /// </summary>

 13        public ConfigurationSetting()
 14        {
 15            //
 16            // TODO: 在此处添加构造函数逻辑
 17            //
 18        }

 19        /// <summary>
 20        /// 
 21        /// </summary>
 22        /// <param name="parent"></param>
 23        /// <param name="configContext"></param>
 24        /// <param name="section"></param>
 25        /// <returns></returns>

 26        public Object Create(Object parent, object configContext, XmlNode section)
 27        {
 28                    
 29            try
 30            {
 31                NameValueSectionHandler baseHandler = new NameValueSectionHandler();
 32                Settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
 33            }

 34            catch
 35            {
 36                Settings = null;
 37            }

 38            return null;
 39        }

 40
 41        ReadSetting
108}


备注:
    

IConfigurationSectionHandler 类的实例必须是线程安全且无状态的。Create 方法必须可由多个线程同时调用。

而且,Create 生成的配置对象必须是线程安全且不可变的。而且,由于配置对象由配置系统来缓存,
因此务必要修改 Create 的父参数。
例如,如果 Create 的返回值只对父参数进行少量修改,则实际修改必须在父参数的复本上进行,而不能在原参数上进行。

  • 上一篇文档:

  • 下一篇文档: 没有了
  •     查找更多“[组图]也谈自定义配置处理类”的内容  
    相关连接
  • Ajax中AutoComplete的使用摘要

  • 关天asp.net ajax beta中在updatepnael中注册脚本的解决方案