日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Duwamish配置持久化学习笔记

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Duwamish配置持久化学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在學習了Duwamish和.Text的配置方法后,對兩者的配置持久化做一個比較。

以ApplicationConfiguration為例,Duwamish的配置文件中的<ApplicationConfiguration>...</ApplicationConfiguration>部分對應于Duwamish.SystemFramework.ApplicationConfiguration類,

??<configSections>
????
<section?name="ApplicationConfiguration"?type="Duwamish7.SystemFramework.ApplicationConfiguration,?Duwamish7.SystemFramework"?/>
??? ...
??
</configSections>
??? ...
??
<ApplicationConfiguration>
????
<add?key="SystemFramework.Tracing.Enabled"?value="False"?/>
????
<add?key="SystemFramework.Tracing.TraceFile"?value="C:\Program?Files\Microsoft?Visual?Studio?.NET?2003\Enterprise?Samples\Duwamish?7.0?CS\.\DuwamishTrace.txt"?/>
????
<add?key="SystemFramework.Tracing.TraceLevel"?value="4"?/>
????
<add?key="SystemFramework.Tracing.SwitchName"?value="DuwamishTraceSwitch"?/>
????
<add?key="SystemFramework.Tracing.SwitchDescription"?value="Error?and?information?tracing?for?Duwamish"?/>
????
<add?key="SystemFramework.EventLog.Enabled"?value="True"?/>
????
<add?key="SystemFramework.EventLog.Machine"?value="."?/>
????
<add?key="SystemFramework.EventLog.SourceName"?value="Duwamish7"?/>
???
<add?key="SystemFramework.EventLog.LogLevel"?value="1"?/>
??
</ApplicationConfiguration>

ApplicationConfiguration類實現(xiàn)了System.Configuration.IConfigurationSectionHandler接口,需要實現(xiàn)一個create()方法,該方法將在調用System.Configuration.GetConfig()方法時自動被調用。在ApplicationConfiguration中有大量的private變量和與這些變量相對應的靜態(tài)public屬性,但這些public屬性僅實現(xiàn)了get{},而不實現(xiàn)set{}。例如,TracingEnabled屬性的實現(xiàn):

public?static?bool?TracingEnabled
{
???
get
???
{
??????
return?tracingEnabled;
???}

}

其中,tracingEnabled為ApplicationConfiguration的私有變量。
另外,在ApplicationConfiguration類中還實現(xiàn)了一個ReadSetting方法,共有四個重載函數(shù),分別提供int,string, bool, TraceLevel四種不同配置類型的設置讀取功能。以下為讀取string類型的ReadSetting的實現(xiàn)
????????public?static?String?ReadSetting(NameValueCollection?settings,?String?key,?String?defaultValue)
????????
{
????????????
try
????????????
{
????????????????Object?setting?
=?settings[key];
????????????????
????????????????
return?(setting?==?null)???defaultValue?:?(String)setting;
????????????}

????????????
catch
????????????
{
????????????????
return?defaultValue;
????????????}

????????}

另一個重要方法是OnApplicationStart(),它是一個靜態(tài)方法,在Global.asa中的Application_Start()事件中被調用,用于在web站點被訪問前,將設置讀入System.Configuration.ConfigurationSettings中,而ReadSetting方法正是從ConfigurationSettings中讀出設置的。ReadSetting的參數(shù)settings是通過baseHandler.Create()方法獲得ConfigurationSettings的引用的,如下所示
????????????NameValueSectionHandler?baseHandler?=?new?NameValueSectionHandler();
????????????????settings?
=?(NameValueCollection)baseHandler.Create(parent,?configContext,?section);
在配置文件中,我發(fā)現(xiàn)一個有趣的現(xiàn)象,add項中的key值為一些不存在類和屬性
<add?key="SystemFramework.Tracing.Enabled"?value="False"?/> 在以上代碼中,SystemFramework.Tracing根本不存在,更不用說Enabled屬性了。實際上,這個key僅僅用于標識變量,如果要讀取這個設置就可以用ReadSetting(settings,"SystemFramework.Tracing.Enabled",defaultValue)完成,而從web頁中讀取這個設置則可以用SystemFramework.ApplicationConfiguration.TracingEnabled靜態(tài)屬性。

如果我們想使配置文件與上層的類相對應,可以考慮創(chuàng)建一個SystemFramework.Tracing類(見下圖),并加入Enabled屬性,然后在Enabled屬性中調用SystemFramework.ApplicationConfiguration.TracingEnabled,這樣就可以根據(jù)類來對配置進行有效分類,同時,也保證配置結構與上層結構的一致

namespace?SystemFramework
{
?????
class?Tracing
?????
{
??????????
??????????
public?static?bool?Enabled
??????????
{
??????????????
get{return?ApplicationConfiguration.TracingEnabled;}
??????????}

??????????
?????}

}

最后是我畫的配置持久化模型圖:
?
參考:
《Duwamish深入剖析-配置篇》http://www.aspcool.com/lanmu/browse1.asp?ID=1045&bbsuser=aspnet

轉載于:https://www.cnblogs.com/tonyqus/archive/2004/12/11/75725.html

總結

以上是生活随笔為你收集整理的Duwamish配置持久化学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。