版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 讀取配置文件方法 讀取配置文件方法,需要的朋友可以參考下。方法1: 復(fù)制代碼 代碼如下:System.Collections.Specialized.NameValueCollection nvc = (System.Collections.Specialized.NameValueCollection) System.Configuration.ConfigurationManager.GetSection(sectionName); string keyValue = nvc.GetValues(keyName)0.ToString(); 方法2: 復(fù)制代碼 代碼如下:System.We
2、b.Configuration.WebConfigurationManager.AppSettingskeyName.ToString(); 參考下面的文章在C#中如何讀取配置文件 1. 配置文件概述: 應(yīng) 用程序配置文件是標(biāo)準(zhǔn)的 XML 文件,XML 標(biāo)記和屬性是區(qū)分大小寫的。它是可以按需要更改的,開發(fā)人員可以使用配置文件來更改設(shè)置,而不必重編譯應(yīng)用程序。配置文件的根節(jié)點(diǎn)是 configuration。我們經(jīng)常訪問的是appSettings,它是由.Net預(yù)定義配置節(jié)。我們經(jīng)常使用的配置文件的架構(gòu)是象下面的形式。先大 概有個(gè)印象,通過后面的實(shí)例會(huì)有一個(gè)比較清楚的認(rèn)識(shí)。下面的“配置節(jié)”可以理解
3、為進(jìn)行配置一個(gè)XML的節(jié)點(diǎn)。 常見配置文件模式: 復(fù)制代碼 代碼如下:<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é)的配置文件及訪問方法 下面是
4、一個(gè)最常見的應(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
5、 key="TemplatePATH" value="Template" /> </appSettings> </configuration> 下面來看看這樣的配置文件如何方法。 string _connectionString=ConfigurationSettings.AppSettings"connectionstring" 使用ConfigurationSettings類的靜態(tài)屬性AppSettings就可以直接方法配置文件中的配置信息。這個(gè)屬性的類型是NameValueCollection。 3
6、. 自定義配置文件 3.1自定義配置節(jié) 一個(gè)用戶自定義的配置節(jié),在配置文件中分為兩部分:一是在<configSections></ configSections>配置節(jié)中聲明配置節(jié)(上面配置文件模式中的“<section>”),另外是在< configSections></ configSections >之后設(shè)置配置節(jié)(上面配置文件模式中的“<Custom element for configuration section>”),有點(diǎn)類似一個(gè)變量先聲明,后使用一樣。聲明一個(gè)配置文件的語句如下: <section n
7、ame=" " type=" "/> <section>:聲明新配置節(jié),即可創(chuàng)建新配置節(jié)。 name:自定義配置節(jié)的名稱。 type:自定義配置節(jié)的類型,主要包括System.Configuration.SingleTagSectionHandler、 System.Configuration.DictionarySectionHandler、 System.Configuration.NameValueSectionHandler。 不同的type不但設(shè)置配置節(jié)的方式不一樣,最后訪問配置文件的操作上也有差異。下面我們就舉一個(gè)配置文件的
8、例子,讓它包含這三個(gè)不同的type。 復(fù)制代碼 代碼如下:<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="Test1" type="System.Configuration.SingleTagSectionHandler"/> <section name="Test2" type="System.Confi
9、guration.DictionarySectionHandler"/> <section name="Test3" type="System.Configuration.NameValueSectionHandler" /> </configSections> <Test1 setting1="Hello" setting2="World"/> <Test2> <add key="Hello" value="Wor
10、ld" /> </Test2> <Test3> <add key="Hello" value="World" /> </Test3> </configuration> 我們對(duì)上面的自定義配置節(jié)進(jìn)行說明。在聲明部分使用<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/>聲明了一個(gè)配置節(jié)它的名字叫 Test1,類型為SingleTagS
11、ectionHandler。在設(shè)置配置節(jié)部分使用 <Test1 setting1="Hello" setting2="World"/>設(shè)置了一個(gè)配置節(jié),它的第一個(gè)設(shè)置的值是Hello,第二個(gè)值是World,當(dāng)然還可以有更多。其它的兩個(gè)配 置節(jié)和這個(gè)類似。 下面我們看在程序中如何訪問這些自定義的配置節(jié)。我們用過ConfigurationSettings類的靜態(tài)方法GetConfig來獲取自定義配置節(jié)的信息。 public static object GetConfig(string sectionName); 下面是訪問這三個(gè)配置節(jié)的代碼: 復(fù)
12、制代碼 代碼如下:/訪問配置節(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 stringIDTest1.Count;
13、 IDTest1.Values.CopyTo(values1,0); MessageBox.Show(values10+" "+values11); /輸出Hello World /訪問配置節(jié)Test2 IDictionary IDTest2 = (IDictionary)ConfigurationSettings.GetConfig("Test2"); string keys=new stringIDTest2.Keys.Count; string values=new stringIDTest2.Keys.Count; IDTest2.Keys.Co
14、pyTo(keys,0); IDTest2.Values.CopyTo(values,0); MessageBox.Show(keys0+" "+values0); /訪問配置節(jié)Test3 NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3"); MessageBox.Show(nc.AllKeys0.ToString()+" "+nc"Hello"); /輸出Hello World 通過上面的代碼我們
15、可以看出,不同的type通過GetConfig返回的類型不同,具體獲得配置內(nèi)容的方式也不一樣。 配置節(jié)處理程序 返回類型 復(fù)制代碼 代碼如下:SingleTagSectionHandler Systems.Collections.IDictionary DictionarySectionHandler Systems.Collections.IDictionary NameValueSectionHandler Systems.Collections.Specialized.NameValueCollection 3.2自定義配置節(jié)組 配置節(jié)組是使用<sectionGroup>元素
16、,將類似的配置節(jié)分到同一個(gè)組中。配置節(jié)組聲明 部分將創(chuàng)建配置節(jié)的包含元素,在<configSections>元素中聲明配置節(jié)組,并將屬于該組的節(jié)置于< sectionGroup>元素中。下面是一個(gè)包含配置節(jié)組的配置文件的例子: 復(fù)制代碼 代碼如下:<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="TestGroup"> <s
17、ection name="Test" type="System.Configuration.NameValueSectionHandler"/> </sectionGroup> </configSections> <TestGroup> <Test> <add key="Hello" value="World"/> </Test> </TestGroup> </configuration> 下面是訪問這個(gè)配置節(jié)組的
18、代碼: NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("TestGroup/Test"); MessageBox.Show(nc.AllKeys0.ToString()+" "+nc"Hello"); /輸出Hello World C# 解析配置文件內(nèi)容 System.Configuration 1. 創(chuàng)建配置節(jié)類 必須創(chuàng)建繼承自ConfigurationSection的對(duì)象才能進(jìn)行配置數(shù)據(jù)讀寫操作,ConfigurationSe
19、ction提供了索引器用來獲取和設(shè)置配置數(shù)據(jù),需要注意的是擁有ConfigurationProperty特性的屬性才會(huì)被存儲(chǔ),并且名稱要保持大小寫完全一致,如下面的代碼中,所有的"id"必須保持一樣。 復(fù)制代碼 代碼如下:class ConfigSectionData : ConfigurationSection ConfigurationProperty("id") public int Id get return (int)this"id" set this"id" = value; Configuration
20、Property("time") public DateTime Time get return (DateTime)this"time" set this"time" = value; 2. 創(chuàng)建配置文件操作對(duì)象 復(fù)制代碼 代碼如下:Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); ConfigSectionData data = new ConfigSectionData(); data.Id
21、 = 1000; data.Time = DateTime.Now; config.Sections.Add("add", data); config.Save(ConfigurationSaveMode.Minimal); 上面的例子是操作 app.config,在根節(jié)點(diǎn)(configuration)下寫入名稱為"add"的配置數(shù)據(jù)。 復(fù)制代碼 代碼如下:<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe
22、ctions> <section name="add" type="ConsoleApplication1.ConfigSectionData, . /> </configSections> <add id="1000" time="02/18/2006 21:51:06" /> </configuration> 需要注意的 VS2005 在IDE模式下會(huì)將信息寫入 *.vshost.exe.config,并且在程序關(guān)閉時(shí)覆寫該文件,因此您可能看不到您寫入的配置數(shù)據(jù),只要
23、在資源管理其中執(zhí)行 *.exe 文件,您就可以在 *.exe.config 文件中看到結(jié)果了。 如果我們需要操作非缺省配置文件,可以使用ExeConfigurationFileMap對(duì)象。 復(fù)制代碼 代碼如下:ExeConfigurationFileMap file = new ExeConfigurationFileMap(); file.ExeConfigFilename = "test.config" Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, Configu
24、rationUserLevel.None); ConfigSectionData data = new ConfigSectionData(); data.Id = 1000; data.Time = DateTime.Now; config.Sections.Add("add", data); config.Save(ConfigurationSaveMode.Minimal); 如果我們不希望在根節(jié)點(diǎn)下寫入配置數(shù)據(jù),可以使用ConfigurationSectionGroup對(duì)象。 復(fù)制代碼 代碼如下:ExeConfigurationFileMap file = new
25、ExeConfigurationFileMap(); file.ExeConfigFilename = "test.config" Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); ConfigSectionData data = new ConfigSectionData(); data.Id = 1000; data.Time = DateTime.Now; config.SectionGroups.Add(
26、"group1", new ConfigurationSectionGroup(); config.SectionGroups"group1".Sections.Add("add", data); config.Save(ConfigurationSaveMode.Minimal); 下面就是生成的配置文件。 復(fù)制代碼 代碼如下:<?xml version="1.0" encoding="utf-8"?> <configuration> <configSection
27、s> <sectionGroup name="group1" type="System.Configuration.ConfigurationSectionGroup, . > <section name="add" type="ConsoleApplication1.ConfigSectionData, . /> </sectionGroup> </configSections> <group1> <add id="1000" time=&q
28、uot;02/18/2006 22:01:02" /> </group1> </configuration> 3. 讀取配置文件 復(fù)制代碼 代碼如下:ExeConfigurationFileMap file = new ExeConfigurationFileMap(); file.ExeConfigFilename = "test.config" Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUser
29、Level.None); ConfigSectionData data = config.SectionGroups"group1".Sections"add" as ConfigSectionData; /ConfigSectionData data = config.Sections"add" as ConfigSectionData; / 從根節(jié)讀取 if (data != null) Console.WriteLine(data.Id); Console.WriteLine(data.Time); 4. 寫配置文件 在寫入 C
30、onfigurationSectionGroup 和 ConfigurationSection 前要判斷同名配置是否已經(jīng)存在,否則會(huì)寫入失敗。 另外如果配置文件被其他Configuration對(duì)象修改,則保存會(huì)失敗,并拋出異常。建議采用Singleton模式。 復(fù)制代碼 代碼如下:ExeConfigurationFileMap file = new ExeConfigurationFileMap(); file.ExeConfigFilename = "test.config" Configuration config = ConfigurationManager.Open
31、MappedExeConfiguration(file, ConfigurationUserLevel.None); ConfigSectionData data = new ConfigSectionData(); data.Id = 2000; data.Time = DateTime.Now; ConfigurationSectionGroup group1 = config.SectionGroups"group1" if (group1 = null) config.SectionGroups.Add("group1", new Configu
32、rationSectionGroup(); ConfigurationSection data = group1.Sections"add" as config; if (add = null) config.SectionGroups"group1".Sections.Add("add", data); else group1.Sections.Remove("add"); group1.Sections.Add("add", data); / 或者直接修改原配置對(duì)象,前提是類型轉(zhuǎn)換要成功。
33、/ConfigSectionData configData = add as ConfigSectionData; /configData.Id = data.Id; /configData.Time = data.Time; config.Save(ConfigurationSaveMode.Minimal); 5. 刪除配置節(jié) 復(fù)制代碼 代碼如下:刪除ConfigurationSectionGroup config.SectionGroups.Remove("group1"); /config.SectionGroups.Clear(); config.Save(Con
34、figurationSaveMode.Minimal); 刪除ConfigurationSection config.Sections.Remove("add1"); /config.Sections.Clear(); if (config.SectionGroups"group1" != null) config.SectionGroups"group1".Sections.Remove("add2"); /config.SectionGroups"group1".Sections.Clear
35、(); config.Save(ConfigurationSaveMode.Minimal); 6. 其他 可以使用 ConfigurationManager.OpenMachineConfiguration() 來操作 Machine.config 文件。 或者使用 System.Web.Configuration 名字空間中的 WebConfigurationManager 類來操作 ASP.net 配置文件。 ConfigurationManager還提供了AppSettings、ConnectionStrings、GetSection()等便捷操作。 7. 使用自定義類 可以使用自定義
36、類,不過需要定義一個(gè)轉(zhuǎn)換器。 復(fù)制代碼 代碼如下:using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Globalization; using System.ComponentModel; / 要寫入配置文件的自定義類 class CustomData public CustomData(string s) this.s = s; private string s; public string S get return
37、 s; set s = value; / 自定義的轉(zhuǎn)換器(演示代碼省略了類型判斷) class CustomConvert : ConfigurationConverterBase public override bool CanConvertFrom(ITypeDescriptorContext ctx, Type type) return (type = typeof(string); public override object ConvertTo(ITypeDescriptorContext ctx, CultureInfo ci, object value, Type type) r
38、eturn (value as CustomData).S; public override object ConvertFrom(ITypeDescriptorContext ctx, CultureInfo ci, object data) return new CustomData(string)data); class ConfigSectionData : ConfigurationSection ConfigurationProperty("id") public int Id get return (int)this"id" set thi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國2021屆高三英語試題8、9月分類解析:A單元-單項(xiàng)填空(A6連詞與介詞)
- 2025年廣東珠海斗門區(qū)白藤街道辦事處招聘政府雇員5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度智能硬件設(shè)備研發(fā)與生產(chǎn)制造合同
- 【2021屆備考】2021屆全國名校數(shù)學(xué)試題分類解析匯編(12月第三期):C單元三角函數(shù)
- 網(wǎng)格化實(shí)施方案
- 特種車司機(jī)崗位心得體會(huì)
- 【Ks5u發(fā)布】河南省六市2021屆高三下學(xué)期第一次聯(lián)考試題-數(shù)學(xué)(文)-掃描版含答案
- 四點(diǎn)共圓基本性質(zhì)及證明
- 全國學(xué)前教育管理信息系統(tǒng)(1期)
- GLP認(rèn)證辦法概要
- 電力工程監(jiān)理實(shí)施細(xì)則
- 央企戰(zhàn)略合作協(xié)議書
- 常見抗痛風(fēng)藥物課件整理
- 大概念視域下高中歷史融通教學(xué)淺思+課件
- 中學(xué)生使用手機(jī)的利與弊
- 一氧化鉛安全技術(shù)說明書MSDS
- kv桿塔防腐施工組織設(shè)計(jì)
- 家裝工地形象及成品保護(hù)驗(yàn)收標(biāo)準(zhǔn)
- GB/T 28799.2-2020冷熱水用耐熱聚乙烯(PE-RT)管道系統(tǒng)第2部分:管材
- 《毛澤東思想概論》題庫
- 勞務(wù)派遣人員考核方案
評(píng)論
0/150
提交評(píng)論