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

首頁 > 編程 > .NET > 正文

自定義應(yīng)用程序配置文件(app.config)

2024-07-10 13:14:36
字體:
供稿:網(wǎng)友
1. 配置文件概述: 
應(yīng)用程序配置文件是標(biāo)準(zhǔn)的 XML 文件,XML 標(biāo)記和屬性是區(qū)分大小寫的。它是可以按需要更改的,開發(fā)人員可以使用配置文件來更改設(shè)置,而不必重編譯應(yīng)用程序。配置文件的根節(jié)點是configuration。我們經(jīng)常訪問的是appSettings,它是由.Net預(yù)定義配置節(jié)。我們經(jīng)常使用的配置文件的架構(gòu)是象下面的形式。先大概有個印象,通過后面的實例會有一個比較清楚的認(rèn)識。下面的“配置節(jié)”可以理解為進(jìn)行配置一個XML的節(jié)點。 

常見配置文件模式: 

<configuration> 
<configSections> //配置節(jié)聲明區(qū)域,包含配置節(jié)和命名空間聲明 
<section> //配置節(jié)聲明 
  <sectionGroup> //定義配置節(jié)組 
   <section> //配置節(jié)組中的配置節(jié)聲明 
<appSettings> //預(yù)定義配置節(jié) 
<Custom element for configuration section> //配置節(jié)設(shè)置區(qū)域 

2. 只有appSettings節(jié)的配置文件及訪問方法 

下面是一個最常見的應(yīng)用程序配置文件的例子,只有appSettings節(jié)。 
程序代碼: [ 復(fù)制代碼到剪貼板 ] 
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<appSettings> 
<add key="connectionstring" value="User ID=sa;Data Source=.;Password=;Initial Catalog=test;Provider=SQLOLEDB.1;" /> 
<add key="TemplatePATH" value="Template" /> 
</appSettings> 
</configuration> 


下面來看看這樣的配置文件如何方法。 

程序代碼: [ 復(fù)制代碼到剪貼板 ] 
string _connectionString=ConfigurationSettings.AppSettings["connectionstring"]; 

使用ConfigurationSettings類的靜態(tài)屬性AppSettings就可以直接方法配置文件中的配置信息。這個屬性的類型是NameValueCollection。 

3. 自定義配置文件 

3.1 自定義配置節(jié) 

一個用戶自定義的配置節(jié),在配置文件中分為兩部分:一是在<configSections></ configSections> 配置節(jié)中聲明配置節(jié)(上面配置文件模式中的“<section>”),另外是在<configSections>< / configSections >之后設(shè)置配置節(jié)(上面配置文件模式中的“< Custom element for configuration section>”),有點類似一個變量先聲明,后使用一樣。聲明一個配置文件的語句如下: 

<section name=" " type=" "/> 
<section>:聲明新配置節(jié),即可創(chuàng)建新配置節(jié)。 

name:自定義配置節(jié)的名稱。 

type:自定義配置節(jié)的類型,主要包括System.Configuration.SingleTagSectionHandler、 System.Configuration.DictionarySectionHandler、 System.Configuration.NameValueSectionHandler。 

不同的type不但設(shè)置配置節(jié)的方式不一樣,最后訪問配置文件的操作上也有差異。下面我們就舉一個配置文件的例子,讓它包含這三個不同的type。 

程序代碼:
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/> 
<section name="Test2" type="System.Configuration.DictionarySectionHandler"/> 
<section name="Test3" type="System.Configuration.NameValueSectionHandler" /> 
</configSections> 

<Test1 setting1="Hello" setting2="World"/> 
<Test2> 
<add key="Hello" value="World" /> 
</Test2> 
<Test3> 
<add key="Hello" value="World" /> 
</Test3> 
</configuration> 


我們對上面的自定義配置節(jié)進(jìn)行說明。在聲明部分使用<section name="Test1" type= "System.Configuration.SingleTagSectionHandler"/>聲明了一個配置節(jié)它的名字叫Test1,類型為SingleTagSectionHandler。在設(shè)置配置節(jié)部分使用 <Test1 setting1= "Hello" setting2="World"/>設(shè)置了一個配置節(jié),它的第一個設(shè)置的值是Hello,第二個值是World,當(dāng)然還可以有更多。其它的兩個配置節(jié)和這個類似。 
下面我們看在程序中如何訪問這些自定義的配置節(jié)。我們用過ConfigurationSettings類的靜態(tài)方法GetConfig來獲取自定義配置節(jié)的信息。 

程序代碼: public static object GetConfig(string sectionName); 


下面是訪問這三個配置節(jié)的代碼: 

程序代碼: 
//訪問配置節(jié)Test1 
IDictionary IDTest1 = (IDictionary)ConfigurationSettings.GetConfig("Test1"); 
string str = (string)IDTest1["setting1"] +" "+(string)IDTest1["setting2"]; 
MessageBox.Show(str); //輸出Hello World 

//訪問配置節(jié)Test1的方法2 
string[] values1=new string[IDTest1.Count]; 
IDTest1.Values.CopyTo(values1,0); 
MessageBox.Show(values1[0]+" "+values1[1]); //輸出Hello World 

//訪問配置節(jié)Test2 
IDictionary IDTest2 = (IDictionary)ConfigurationSettings.GetConfig("Test2"); 
string[] keys=new string[IDTest2.Keys.Count]; 
string[] values=new string[IDTest2.Keys.Count]; 
IDTest2.Keys.CopyTo(keys,0); 
IDTest2.Values.CopyTo(values,0); 
MessageBox.Show(keys[0]+" "+values[0]); 

//訪問配置節(jié)Test3 
NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3"); 
MessageBox.Show(nc.AllKeys[0].ToString()+" "+nc["Hello"]); //輸出Hello World 


通過上面的代碼我們可以看出,不同的type通過GetConfig返回的類型不同,具體獲得配置內(nèi)容的方式也不一樣。 

[table] 
配置節(jié)處理程序|返回類型[br] 
[/table] 
SingleTagSectionHandler Systems.Collections.IDictionary 

DictionarySectionHandler Systems.Collections.IDictionary 

NameValueSectionHandler Systems.Collections.Specialized.NameValueCollection 


3.2 自定義配置節(jié)組 
配置節(jié)組是使用<sectionGroup>元素,將類似的配置節(jié)分到同一個組中。配置節(jié)組聲明部分將創(chuàng)建配置節(jié)的包含元素,在< configSections>元素中聲明配置節(jié)組,并將屬于該組的節(jié)置于<sectionGroup>元素中。下面是一個包含配置節(jié)組的配置文件的例子: 

復(fù)制代碼代碼如下:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<sectionGroup name="TestGroup"> 
<section name="Test" type="System.Configuration.NameValueSectionHandler"/> 
</sectionGroup> 
</configSections> 

<TestGroup> 
<Test> 
<add key="Hello" value="World"/> 
</Test> 
</TestGroup> 
</configuration> 


下面是訪問這個配置節(jié)組的代碼: 

程序代碼:
NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("TestGroup/Test"); 
MessageBox.Show(nc.AllKeys[0].ToString()+" "+nc["Hello"]); //輸出Hello World
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邮市| 杭锦旗| 买车| 互助| 牡丹江市| 梁山县| 青岛市| 吉水县| 西藏| 乐陵市| 嘉峪关市| 集安市| 邛崃市| 平泉县| 潢川县| 高台县| 衡水市| 保亭| 兴隆县| 靖边县| 融水| 高雄市| 介休市| 绥江县| 睢宁县| 佳木斯市| 项城市| 永靖县| 济源市| 顺义区| 仪陇县| 鄂伦春自治旗| 抚松县| 新野县| 达日县| 肇源县| 江孜县| 同心县| 颍上县| 绥芬河市| 定安县|