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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何使用.NET配置文件(二)

發(fā)布時間:2025/3/21 asp.net 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用.NET配置文件(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
.NET的應(yīng)用程序配置文件,使用的是XML格式。相對INI文件來說,它的功能要強上不少,而且具有很強的可擴展性。它的缺點是不能直接進行寫操作,也就是說,不能直接在程序中修改配置文件的數(shù)據(jù)(當然不是指不能,不過不是本文討論的范圍)。本文主要目的是探討如何擴展配置文件,并在其加入各種自定義配置信息。

如何使用.NET配置文件(一)??? 如何使用.NET配置文件(二)??? 沐楓網(wǎng)志


??? 3. 自定義配置結(jié)構(gòu) (使用IConfigurationSectionHandler)
?假設(shè)有以下的配置信息,其在MyInfo可以重復許多次,那么應(yīng)如何讀取配置呢?這時就要使用自定義的配置程序了。

<myConfigs>
??
<myInfo?Area="Fuzhou"?Device="Printer"?Customer="Muf"?/>
??
<myInfo?Area="Shanghai"?Device="Mobile"?Customer="Liny"?/>
</myConfig>

?訪問代碼如下:

Hashtable?cfgTable?=?(Hashtable)ConfigurationSettings.GetConfig(?"myConfigs"?);

Debug.Assert(?cfgTable.Count?
==?2);
Hashtable?cfgFuzhou?
=?(Hashtable)cfgTable["Fuzhou"];
Hashtable?cfgShanghai?
=?(Hashtable)cfgTable["Shanghai"];
Debug.Assert(?cfgFuzhou[
"Device"]?==?"Printer"?);
Debug.Assert(?cfgShanghai[
"Device"]?==?"Mobile"?);
Debug.Assert(?cfgFuzhou[
"Customer"]?==?"Muf"?);
Debug.Assert(?cfgShanghai[
"Customer"]?==?"Liny"?);

foreach(Hashtable?cfg?in?cfgTable.Values)
{
?Console.WriteLine(
"Area={0}?Device={1}?Customer={2}",?cfg["Area"],?cfg["Device"],?cfg["Customer"]);
}


?為了能使用上面的訪問代碼來訪問配置結(jié)構(gòu),我們需要生成一個特定的配置讀取類(ConfigurationSectionHandler),例子很簡單,就不多做說明了:

public?class?MyInfoSectionHandler:?IConfigurationSectionHandler
{
?
public?object?Create(object?parent,?object?configContext,?System.Xml.XmlNode?section)
?
{
??Hashtable?config?
=?new?Hashtable();
??
foreach(XmlNode?node?in?section.ChildNodes)
??
{
???
if(node.Name?!=?"myInfo")
????
throw?new?System.Configuration.ConfigurationException("不可識別的配置項",?node);

???Hashtable?item?
=?new?Hashtable();
???
foreach(XmlAttribute?attr?in?node.Attributes)
???
{
????
switch(attr.Name)
????
{
?????
case?"Area":
?????
case?"Device":
?????
case?"Customer":
??????item.Add(attr.Name,?attr.Value);
??????
break;
?????
default:
??????
throw?new?System.Configuration.ConfigurationException("不可識別的配置屬性",?attr);
????}

???}

???config.Add(item[
"Area"],?item);
??}

??
return?config;
?}

}


?然后,我們再定義配置說明。其中,myNamespace.MyInfoSectionHandler 是MyInfoSectionHandler類的帶名字空間的完整名稱;myApp 則是定義MyInfoSectionHandler類的程序集不帶擴展名的名字(如myApp.dll或myApp.exe):

<?xml?version="1.0"?encoding="utf-8"?>
<configuration>
??
<!--?以下是自定義配置的聲明?-->
??
<configSections>
??????
<section?name="myConfig"?type="myNamespace.MyInfoSectionHandler,?myApp"?/>
??
</configSections>???
??
<myConfigs>
????
<myInfo?Area="Fuzhou"?Device="Printer"?Customer="Muf"?/>
????
<myInfo?Area="Shanghai"?Device="Mobile"?Customer="Liny"?/>
??
</myConfig>
</configuration>

?根據(jù)上面的例子,我們可以使用IConfigurationSectionHandler來實現(xiàn)任意的配置文件結(jié)構(gòu)。

轉(zhuǎn)載于:https://www.cnblogs.com/xiaobaidhg/archive/2007/03/20/681022.html

總結(jié)

以上是生活随笔為你收集整理的如何使用.NET配置文件(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。