温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行.net Framework配置文件操作

发布时间:2021-11-25 09:33:11 阅读:335 作者:柒染 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这期内容当中小编将会给大家带来有关如何进行.net Framework配置文件操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

.NET Framework的应用可以帮助开发人员创建一个支持WEB应用程序部署的平台。方便编程人员进行代码编写。我们将会在文章中为大家详细介绍有关.NET Framework配置文件的操作方法,希望对大家有所帮助。

.NET Framework配置文件1. 创建配置节类

必须创建继承自ConfigurationSection的对象才能进行配置数据读写操作,ConfigurationSection提供了索引器用来获取和设置配置数据,需要注意的是拥有ConfigurationProperty 特性的属性才会被存储,并且名称要保持大小写完全一致,如下面的代码中,所有的"id"必须保持一样。

  1. class ConfigSectionData : 
    ConfigurationSection   

  2. {   

  3. [ConfigurationProperty("id")]   

  4. public int Id   

  5. {   

  6. get { return (int)this["id"];   

  7. }   

  8. set { this["id"] = value;   

  9. }   

  10. }   

  11. [ConfigurationProperty("time")]   

  12. public DateTime Time   

  13. {   

  14. get   

  15. {   

  16. return (DateTime)this["time"];   

  17. }   

  18. set { this["time"] = value;   

  19. }   

  20. }   

.NET Framework配置文件2. 创建配置文件操作对象

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);   ConfigSectionData data = new ConfigSectionData(); data.Id = 1000data.Time = DateTime.Now; config.Sections.Add("add"data);   config.Save(ConfigurationSaveMode.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(ConfigurationSaveMode.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(ConfigurationSaveMode.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 : 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)   {   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配置文件操作了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×