扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这期内容当中小编将会给大家带来有关如何进行.net Framework配置文件操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联服务项目包括浦东网站建设、浦东网站制作、浦东网页制作以及浦东网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,浦东网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到浦东省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
.NET Framework的应用可以帮助开发人员创建一个支持WEB应用程序部署的平台。方便编程人员进行代码编写。我们将会在文章中为大家详细介绍有关.NET Framework配置文件的操作方法,希望对大家有所帮助。
.NET Framework配置文件1. 创建配置节类
必须创建继承自ConfigurationSection的对象才能进行配置数据读写操作,ConfigurationSection提供了索引器用来获取和设置配置数据,需要注意的是拥有ConfigurationProperty 特性的属性才会被存储,并且名称要保持大小写完全一致,如下面的代码中,所有的"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. 创建配置文件操作对象
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,在根节点(configuration)下写入名称为"add"的配置数据。
需要注意的 VS2005 在IDE模式下会将信息写入 *.vshost.exe.config,并且在程序关闭时覆写该文件,因此您可能看不到您写入的配置数据,只要在资源管理其中执行 *.exe 文件,您就可以在 *.exe.config 文件中看到结果了。
如果我们需要操作非缺省配置文件,可以使用ExeConfigurationFileMap对象。
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);
如果我们不希望在根节点下写入配置数据,可以使用ConfigurationSectionGroup对象。
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;// 从根节读取
if (data != null)
{
Console.WriteLine(data.Id);
Console.WriteLine(data.Time);
}
.NET Framework配置文件4. 写配置文件
在写入 ConfigurationSectionGroup 和 ConfigurationSection 前要判断同名配置是否已经存在,否则会写入失败。
另外如果配置文件被其他Configuration对象修改,则保存会失败,并抛出异常。建议采用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);
// 或者直接修改原配置对象,前提是类型转换要成功。
//ConfigSectionData configData =
add as ConfigSectionData;//configData.Id = data.Id;
//configData.Time = data.Time;
}
config.Save(ConfigurationSaveMode.Minimal);
.NET Framework配置文件5. 删除配置节
删除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() 来操作 Machine.config 文件。 或者使用 System.Web.Configuration 名字空间中的 WebConfigurationManager 类来操作 ASP.net 配置文件。 ConfigurationManager还提供了AppSettings、ConnectionStrings、GetSection()等便捷操作。
.NET Framework配置文件7. 使用自定义类
比如ConfigSectionData里面,除了简单类型之外,可不可以有自定义的类。可以使用自定义类,不过需要定义一个转换器。
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;
}
}
}
// 自定义的转换器(演示代码省略了类型判断)
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))]// 指定转换器 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);
// 读取测试
ConfigSectionData configData =
(ConfigSectionData)config.Sections["add"];bbs.bitsCN.com Console.WriteLine
(configData.Custom.S);}
}
上述就是小编为大家分享的如何进行.net Framework配置文件操作了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流