您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何進(jìn)行.net Framework配置文件操作,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
.NET Framework的應(yīng)用可以幫助開發(fā)人員創(chuàng)建一個(gè)支持WEB應(yīng)用程序部署的平臺(tái)。方便編程人員進(jìn)行代碼編寫。我們將會(huì)在文章中為大家詳細(xì)介紹有關(guān).NET Framework配置文件的操作方法,希望對(duì)大家有所幫助。
.NET Framework配置文件1. 創(chuàng)建配置節(jié)類
必須創(chuàng)建繼承自ConfigurationSection的對(duì)象才能進(jìn)行配置數(shù)據(jù)讀寫操作,ConfigurationSection提供了索引器用來(lái)獲取和設(shè)置配置數(shù)據(jù),需要注意的是擁有ConfigurationProperty 特性的屬性才會(huì)被存儲(chǔ),并且名稱要保持大小寫完全一致,如下面的代碼中,所有的"id"必須保持一樣。
class ConfigSectionData :
ConfigurationSection
{
[ConfigurationProperty("id")]
public int Id
{
get { return (int)this["id"];
}
set { this["id"] = value;
}
}
[ConfigurationProperty("time")]
public DateTime Time
{
get
{
return (DateTime)this["time"];
}
set { this["time"] = value;
}
}
}
.NET Framework配置文件2. 創(chuàng)建配置文件操作對(duì)象
Configuration config =
ConfigurationManager.
OpenExeConfiguration
(ConfigurationUserLevel.None);ConfigSectionData data =
new ConfigSectionData();data.Id = 1000; data.Time =
DateTime.Now;config.Sections.Add("add", data);
config.Save(Configuration
SaveMode.Minimal);
上面的例子是操作 app.config,在根節(jié)點(diǎn)(configuration)下寫入名稱為"add"的配置數(shù)據(jù)。
需要注意的 VS2005 在IDE模式下會(huì)將信息寫入 *.vshost.exe.config,并且在程序關(guān)閉時(shí)覆寫該文件,因此您可能看不到您寫入的配置數(shù)據(jù),只要在資源管理其中執(zhí)行 *.exe 文件,您就可以在 *.exe.config 文件中看到結(jié)果了。
如果我們需要操作非缺省配置文件,可以使用ExeConfigurationFileMap對(duì)象。
ExeConfigurationFileMap
file = new ExeConfigurationFileMap();
file.ExeConfigFilename = "test.config";
Configuration config = ConfigurationManager.
OpenMappedExeConfiguration(file,
ConfigurationUserLevel.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ì)象。
ExeConfigurationFileMap
file = new 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("group1",
new ConfigurationSectionGroup());config.SectionGroups["group1"].
Sections.Add("add", data);config.Save(ConfigurationSaveMode.Minimal);
下面就是生成的配置文件。
.NET Framework配置文件3. 讀取配置文件
ExeConfigurationFileMap
file = new ExeConfigurationFileMap();
file.ExeConfigFilename = "test.config";
Configuration config =ConfigurationManager.
OpenMappedExeConfiguration(file,
ConfigurationUserLevel.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);
}
.NET Framework配置文件4. 寫配置文件
在寫入 ConfigurationSectionGroup 和 ConfigurationSection 前要判斷同名配置是否已經(jīng)存在,否則會(huì)寫入失敗。
另外如果配置文件被其他Configuration對(duì)象修改,則保存會(huì)失敗,并拋出異常。建議采用Singleton模式。
ExeConfigurationFileMap file =
new ExeConfigurationFileMap();file.ExeConfigFilename = "test.config";
Configuration config = ConfigurationManager.
OpenMappedExeConfiguration(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 ConfigurationSectionGroup());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)換要成功。
//ConfigSectionData configData =
add as ConfigSectionData;//configData.Id = data.Id;
//configData.Time = data.Time;
}
config.Save(ConfigurationSaveMode.Minimal);
.NET Framework配置文件5. 刪除配置節(jié)
刪除ConfigurationSectionGroup
config.SectionGroups.
Remove("group1");//config.SectionGroups.Clear();
config.Save(Configuration
SaveMode.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();}
config.Save(Configuration
SaveMode.Minimal);
.NET Framework配置文件6. 其他
可以使用 ConfigurationManager.OpenMachineConfiguration() 來(lái)操作 Machine.config 文件。 或者使用 System.Web.Configuration 名字空間中的 WebConfigurationManager 類來(lái)操作 ASP.net 配置文件。 ConfigurationManager還提供了AppSettings、ConnectionStrings、GetSection()等便捷操作。
.NET Framework配置文件7. 使用自定義類
比如ConfigSectionData里面,除了簡(jiǎn)單類型之外,可不可以有自定義的類??梢允褂米远x類,不過(guò)需要定義一個(gè)轉(zhuǎn)換器。
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 s;
}
set
{
s = value;
}
}
}
// 自定義的轉(zhuǎn)換器(演示代碼省略了類型判斷)
class CustomConvert : Configuration
ConverterBase{
public override bool CanConvertFrom
(ITypeDescriptorContext ctx, Type type){
return (type == typeof(string));
}
public override object ConvertTo
(ITypeDescriptorContext ctx,
CultureInfo ci, object value, Type type){
return (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
{
this["id"] = value;
}
}
[ConfigurationProperty("time")]
public DateTime Time { get
{
return (DateTime)this["time"];
}
set
{
this["time"] = value;
}
}
[ConfigurationProperty("custom")]
[TypeConverter(typeof(CustomConvert))]// 指定轉(zhuǎn)換器 public CustomData Custom
{
get
{
return (CustomData)this["custom"];
} set
{
this["custom"] = value;
}
}
}
public class Program
{
static void Main(string[] args)
{
Configuration config = ConfigurationManager.
OpenExeConfiguration(ConfigurationUserLevel.None);ConfigSectionData data = new ConfigSectionData();
data.Id = 1000;
data.Time = DateTime.Now;
data.Custom = new CustomData("abcdefg...");
config.Sections.Add("add", data);
config.Save(ConfigurationSaveMode.Minimal);
// 讀取測(cè)試
ConfigSectionData configData =
(ConfigSectionData)config.Sections["add"];bbs.bitsCN.com Console.WriteLine
(configData.Custom.S);}
}
上述就是小編為大家分享的如何進(jìn)行.net Framework配置文件操作了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。