国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在.NET框架下使用自定義配置設置

2024-07-10 13:12:08
字體:
來源:轉載
供稿:網友

.net框架通過基于xml的配置使配置設置駕輕就熟。它同時還提供了必要的方法,通過集合類(collection classes)訪問這些設置。

通過一個靜態的configurationsettings類可訪問實際的配置數據。該類還提供了一個getconfig()方法,可向一個合適的集合返回一個對象。本文中,我將示范三種可用來訪問和存儲配置信息的方法。

應用配置數據存儲在app.config文件,并由configsections節點定義。每一section都有一個type屬性定義。這里我將討論的3個類型為namevaluesectionhandler、singletagsectionhandler和dictionarysectionhandler。你可以用一個sectiongroup元素定義節組。以下是一個配置節定義的例子:

<section name="mycustomsection"
type="system.configuration.namevaluesectionhandler"/>

建議使用type="system.configuration.namevaluesectionhandler,system,version=1.0.3300.0,culture=neutral, publickeytoken=b77a5c561934e089"

節組是嵌入一個sectiongroup元素的獨立配置節。以下是一個節組的例子:

<sectiongroup name="customgroup">
<section name="custom1"
type="system.configuration.namevaluesectionhandler"/>
<section name="custom2" type="system.configuration.namevaluesectionhandler"/>
</sectiongroup>

最后,你所指定的配置節將用于構造存儲配置數據的自定義的xml節點。若要向配置節添加數據,只要將該配置節作為一個xml節點包含進去,并用add節點添加collection數據。下例為一個namevaluesectionhandler配置節:

<mycustomsection>
<add key="key1" value="value1"/>
<add key="key2" value="value2"/>
</mycustomsection>

mycustomsection程序段包含一個命名值集合,其兩個入口由key1和key2定義。

singletagsectionhandler較容易構造。正如namevaluesectionhandler,配置節可在configsections節點中找到。但在singletagsectionhandlers和namevaluesectionhandlers中,配置數據的添加方式是不同的,如下所示:

. . .
<section name="mysingletagsection"
type="system.configuration.singletagsectionhandler"/>
. . .
<mysingletagsection setting1="value1" setting2="value2" setting3="value3"/>
. . .

dictionarysectionhandler與namevaluesectionhandler相似,但前者返回hashtable,后者返回namevaluecollection。當訪問大量配置值時,hashtable要快于namevaluecollectio。dictionarysectionhandler與namevaluesectionhandler的構造方式相同,如下例:

. . .
<section name="mydictionarysection"
type="system.configuration.dictionarysectionhandler"/>
. . .
<mydictionarysection>
<add key="key1" value="value1"/>
</mydictionarysection>
. . .

我自己用了一下,報錯。。原因還挺特別

system.configuration.dictionarysectionhandler,system,version=1.0.3300.0,culture=neutral, publickeytoken=b77a5c561934e089

沒有辦法把type改為以上那段。終于行了。

構造節組的方法與構造單獨配置節的方法基本相同,唯一的不同在于前者的自定義節點互相嵌套。借用前面的節組定義,以下是對節組的實現:

<customgroup>
<custom1>
<add key="key1" value="value1"/>
</custom1>
<custom2>
<add key="key1" value="value1"/>
</custom2>
</customgroup>

通過system.configuration.configurationsettings命名空間的getconfig()方法和自定義配置節的串值來訪問應用配置設置,然后將該方法的結果轉為合適的類型。

對于singletagsectionhandler,將結果轉為system.collections命名空間的idictionary接口類型。對于namevaluesectionhandler,結果轉為在system.collections.specialized命名空間中定義的namevaluecollection類型。最后,對于dictionarysectionhandler,結果轉為system.collections命名空間中的hashtable類型。

對于節組,唯一的區別是,將加上正斜杠和配置節名的節組名作為字符串參數傳遞給getconfig()方法,以訪問自定義設置。

以下是一個使用這些自定義設置的實例:

    system.collections.idictionary stsh = (system.collections.idictionary)
system.configuration.configurationsettings.getconfig("mysingletagsection");
    system.collections.specialized.namevaluecollection nvsh =
 (system.collections.specialized.namevaluecollection)
 system.configuration.configurationsettings.getconfig("mynamevaluesection");
    system.collections.hashtable dsh = (system.collections.hashtable)
 system.configuration.configurationsettings.getconfig("mydictionarysection");
    system.collections.specialized.namevaluecollection sgnvsh =
 (system.collections.specialized.namevaluecollection)
 system.configuration.configurationsettings.getconfig("mysectiongroup/mysection
1");
    system.diagnostics.debug.writeline((string)stsh["sample1"]);
    system.diagnostics.debug.writeline((string)nvsh["key1"]);
    system.diagnostics.debug.writeline((string)dsh["key1"]);
    system.diagnostics.debug.writeline((string)sgnvsh["key1"]);

以下是用于上面代碼的一段配置xml代碼:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configsections>
        <section name="mysingletagsection"
 type="system.configuration.singletagsectionhandler"/>
        <section name="mydictionarysection"
 type="system.configuration.dictionarysectionhandler"/>
        <section name="mynamevaluesection"
type="system.configuration.namevaluesectionhandler"/>
        <sectiongroup name="mysectiongroup">
            <section name="mysection1"
 type="system.configuration.namevaluesectionhandler"/>
            <section name="mysection2"
 type="system.configuration.namevaluesectionhandler"/>
        </sectiongroup>
    </configsections>
    <mysingletagsection sample1="value1" sample2="value2" sample3="value3"/>
    <mydictionarysection>
        <add key="key1" value="value1"/>
        <add key="key2" value="value2"/>
    </mydictionarysection>
    <mynamevaluesection>   
        <add key="key1" value="value1"/>
        <add key="key2" value="value2"/>
    </mynamevaluesection>
    <mysectiongroup>
        <mysection1>
            <add key="key1" value="value1"/>
            <add key="key2" value="value2"/>
        </mysection1>
        <mysection2>
            <add key="key1" value="value1"/>
            <add key="key2" value="value2"/>
        </mysection2>
    </mysectiongroup>
</configuration>

欲知更多信息,請訪問msdn library中的application configuration settingsconfiguration schema



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤台县| 佛学| 衡东县| 犍为县| 堆龙德庆县| 伊宁县| 正阳县| 大埔区| 永和县| 遂昌县| 长沙市| 渝中区| 波密县| 怀集县| 财经| 龙里县| 弋阳县| 万年县| 绵竹市| 桐城市| 宾川县| 神池县| 西峡县| 岫岩| 木兰县| 普洱| 泰顺县| 昭苏县| 垣曲县| 武安市| 垫江县| 井研县| 梧州市| 湖北省| 个旧市| 京山县| 巢湖市| 庆云县| 琼海市| 日喀则市| 桐庐县|