知识大全 .Net Framework提供的配置文件操作

Posted 操作

篇首语:你可以忘掉失败,但不能忘掉教训;你可以忘掉昨天,但不能忘记历史。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .Net Framework提供的配置文件操作相关的知识,希望对你有一定的参考价值。

.Net Framework提供的配置文件操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   创建配置节类

  必须创建继承自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;

  

  

   创建配置文件操作对象

  Configuration config = ConfigurationManager OpenExeConfiguration(ConfigurationUserLevel None)

  ConfigSectionData data = new ConfigSectionData()

  data Id = ;

  data Time = DateTime Now;

  config Sections Add( add data)

  config Save(ConfigurationSaveMode Minimal)

  上面的例子是操作nfig 在根节点(configuration)下写入名称为 add 的配置数据

  需要注意的 VS 在IDE模式下会将信息写入*nfig 并且在程序关闭时覆写该文件 因此您可能看不到您写入的配置数据 只要在资源管理其中执行* exe 文件 您就可以在*nfig 文件中看到结果了

  如果我们需要操作非缺省配置文件 可以使用ExeConfigurationFileMap对象

  ExeConfigurationFileMap file = new ExeConfigurationFileMap()

  file ExeConfigFilename = nfig ;

  Configuration config = ConfigurationManager OpenMappedExeConfiguration(file ConfigurationUserLevel None)

  ConfigSectionData data = new ConfigSectionData()

  data Id = ;

  data Time = DateTime Now;

  config Sections Add( add data)

  config Save(ConfigurationSaveMode Minimal)

  如果我们不希望在根节点下写入配置数据 可以使用ConfigurationSectionGroup对象

  ExeConfigurationFileMap file = new ExeConfigurationFileMap()

  file ExeConfigFilename = nfig ;

  Configuration config = ConfigurationManager OpenMappedExeConfiguration(file

  ConfigurationUserLevel None)

  ConfigSectionData data = new ConfigSectionData()

  data Id = ;

  data Time = DateTime Now;

  config SectionGroups Add( group new ConfigurationSectionGroup())

  config SectionGroups[ group ] Sections Add( add data)

  config Save(ConfigurationSaveMode Minimal)

  下面就是生成的配置文件

   读取配置文件

  ExeConfigurationFileMap file = new ExeConfigurationFileMap()

  file ExeConfigFilename = nfig ;

  Configuration config = ConfigurationManager OpenMappedExeConfiguration(file ConfigurationUserLevel None)

  ConfigSectionData data = config SectionGroups[ group ] Sections[ add ] as ConfigSectionData;

  //ConfigSectionData data = config Sections[ add ] as ConfigSectionData; // 从根节读取

  if (data != null)

  

  Console WriteLine(data Id)

  Console WriteLine(data Time)

  

   写配置文件

  在写入 ConfigurationSectionGroup 和 ConfigurationSection 前要判断同名配置是否已经存在 否则会写入失败 另外如果配置文件被其他Configuration对象修改 则保存会失败 并抛出异常 建议采用Singleton模式 ExeConfigurationFileMap file = new ExeConfigurationFileMap()

  file ExeConfigFilename = nfig ;

  Configuration config = ConfigurationManager OpenMappedExeConfiguration(file ConfigurationUserLevel None)

  ConfigSectionData data = new ConfigSectionData()

  data Id = ;

  data Time = DateTime Now;

  ConfigurationSectionGroup group = config SectionGroups[ group ];

  if (group == null)

  config SectionGroups Add( group new ConfigurationSectionGroup())

  ConfigurationSection data = group Sections[ add ] as config;

  if (add == null)

  config SectionGroups[ group ] Sections Add( add data)

  else

  

  group Sections Remove( add )

  group Sections Add( add data)

  // 或者直接修改原配置对象 前提是类型转换要成功

  //ConfigSectionData configData = add as ConfigSectionData;

  //configData Id = data Id;

  //configData Time = data Time;

  

  config Save(ConfigurationSaveMode Minimal)

   删除配置节

  删除ConfigurationSectionGroup  config SectionGroups Remove( group )

  //config SectionGroups Clear()

  config Save(ConfigurationSaveMode Minimal)

  删除ConfigurationSection  config Sections Remove( add )

  //config Sections Clear()

  if (config SectionGroups[ group ] != null)

  

  config SectionGroups[ group ] Sections Remove( add )

  //config SectionGroups[ group ] Sections Clear()

  

  config Save(ConfigurationSaveMode Minimal) 其他

  可以使用 ConfigurationManager OpenMachineConfiguration() 来操作 nfig 文件 或者使用 System Web Configuration 名字空间中的 WebConfigurationManager 类来操作 配置文件

  ConfigurationManager还提供了AppSettings ConnectionStrings GetSection()等便捷操作 使用自定义类

  比如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 = ;

  data Time = DateTime Now;

  data Custom = new CustomData( abcdefg… )

  config Sections Add( add data)

  config Save(ConfigurationSaveMode Minimal)

  // 读取测试

  ConfigSectionData configData = (ConfigSectionData)config Sections[ add ];

  Console WriteLine(configData Custom S)

  

cha138/Article/program/net/201311/13806

相关参考

知识大全 详谈.NET Framework处理XML操作技巧

详谈.NETFramework处理XML操作技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 .NET 配置文件简单使用

.NET配置文件简单使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当我们开发系统的时候要把

知识大全 讲述如何使用.NET的配置文件

讲述如何使用.NET的配置文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NET的应

知识大全 .net 读取非标准配置文件的小例子

这篇文章介绍了net读取非标准配置文件的小例子有需要的朋友可以参考一下   代码如下复制代码代码如下:publicstaticstringConfig(stringkey) &nb

知识大全 ASP.NET 配置文件层次结构和继承

ASP.NET配置文件层次结构和继承  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  您可以在整个

知识大全 如何在Microsoft.NET中自定义配置文件

如何在Microsoft.NET中自定义配置文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 加密和解密ASP.NET配置文件(Web.config)

加密和解密ASP.NET配置文件(Web.config)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ASP.NET入门教程 13.3.2 配置文件[1]

ASP.NET入门教程13.3.2配置文件[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 ASP.NET入门教程 13.3.2 配置文件[2]

ASP.NET入门教程13.3.2配置文件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 ASP.NET入门教程 11.6 构建配置文件[2]

ASP.NET入门教程11.6构建配置文件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n