在基于 .net 2.0 的企业库中,原来的配置应用程序块被废除了,使用了 .net 2.0 自带的读写配置功能,下面我们就来看看 .net 2.0 中读写配置的功能。

即:  ConfigurationManager  类

注意:
ConfigurationManager 是处理客户端应用程序配置文件的首选方法;不推荐使用任何其他方法。
对于 Web 应用程序,建议使用 WebConfigurationManager 类。

这个类的  AppSettings 属性 在以前1.0 的时候,就有了, 2.0 中增加了 ConnectionStrings 属性。
这些都不是今天我们要探讨的内容,我们今天要探讨的内容,是把一个配置类保存到配置文件中,以及把这个配置类从配置文件中实例化出来。

这个配置类,必须是 派生自
System.Configuration.ConfigurationSection 类

如下面的类就是一个配置类

using System.Text;
using System.Configuration;
namespace ConfigTest
{
    class ConfigDataClass : ConfigurationSection
    {
        public ConfigDataClass()
        { }

[ConfigurationProperty("id")]
        public int ID{
            get{return (int)this["id"];}
            set{   this["id"] = value;}
        }

[ConfigurationProperty("name")]
        public string Name{
            get{ return this["name"].ToString();}
            set{ this["name"] = value;}
        }

public override string ToString(){
            StringBuilder info = new StringBuilder();
            info.AppendFormat("id = {0};name = {1}", ID, Name);
            return info.ToString();
        }
    }
}

先说如何把这个配置类更新到配置文件中

// 配置信息类初始化
ConfigDataClass configData = new ConfigDataClass();
configData.ID = 100;
configData.Name = "我是谁?";

// 打开当前文件的配置文件
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 干掉原先的配置
config.Sections.Remove("SettingsData");
// 把新的配置更新上去
config.Sections.Add("SettingsData", configData);
// 保存配置文件
config.Save();

MessageBox.Show(configData.ToString());

读取配置信息

ConfigDataClass configData = ConfigurationManager.GetSection("SettingsData") as ConfigDataClass;
if (configData == null) return;
MessageBox.Show(configData.ToString());

当文件修改的时候,自动从新登录配置文件需求

这个更简单,只需要使用一个 System.IO.FileSystemWatcher 对象即可
private FileSystemWatcher watcher;

在初始化的时候,订阅文件改变事件。

// Initialize file system watcher
watcher = new FileSystemWatcher(AppDomain.CurrentDomain.BaseDirectory);
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.EnableRaisingEvents = false;

然后在 watcher_Changed 方法中,

private void watcher_Changed(object sender, FileSystemEventArgs e)
{
    if (e.FullPath.ToLower().Contains(".config"))
    {
  for (int i = 0; i < 3; i++)
  {
   try
   {
    // Using the static method, read the cached configuration settings
    ConfigurationManager.RefreshSection("EditorSettings");
    break;
   }
   catch (ConfigurationErrorsException)
   {
    if (i == 2) throw;
    else Thread.Sleep(100);
   }
  }
    }
}

显然,上述的功能已经能满足我们的需求了,所以企业库才废弃了之前的配置管理应用程序块。

转载于:https://www.cnblogs.com/MaxWoods/archive/2008/02/20/1074667.html

.NET编程 -- .NET 2.0 中对配置文件的读写相关推荐

  1. ATS 5.3.0中利用grep得到纯净的配置文件

    ATS 5.3.0中的配置文件通常会标有详细的注释,但是我们有时候需要纯净的配置文件,特别是在线上部署的配置文件,不需要这么详细的注释.下面是处理过程. cat records.config | gr ...

  2. C语言编程>第二十周 ② 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    例题:下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调.次最大数和b[1]中的数对调. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. ...

  3. 用编程求FFFF:0到FFFF:F字节型数据的和,结果存放在dx中

    一.代码 assume cs:codecode segment ; 用编程求FFFF:0到FFFF:F字节型数据的和, ;结果存放在dx中;1.做好初始化.即使默认为0 ;2.注意数据从哪里来,到哪里 ...

  4. C# 4.0中对Office编程的预览和对可选参数的体验

    最近随着VS2010 beta2的发布,有机会体验了一下C# 4.0中的很多新特性,这里对官方提供的一个简单的实例进行了一下分析,因为我的2010跑在win7上新建所有的Windows项目都会无响应, ...

  5. AS3.0中的显示编程(五)-- Loader(加载器)

    Loader类是一个显示容器,可用来加载SWF文件或图像(JPG.GIF.PNG),被加载的显示对象将做为Loader对象的子级添加.使用Loader类时,不可避免的要注意安全模型.但这块内容我会集中 ...

  6. 在ASP.NET 2.0中使用样式、主题和皮肤

    ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...

  7. ASP.NET4.0中客户端ID的生成

    从去年某个时候,我开始探索ASP.NET4.0 Web窗体的改进.我发现ASP.NET4.0中一些令人兴奋地改进,我确认这一切都会使WEB开发更简单并为我们提供更多灵活性.因此我逐个摘选了这些 很令人 ...

  8. ASP.NET 2.0 中改进的缓存功能

    摘要:本文中,Stephen Walther 将重点介绍 ASP.NET 2.0 中新增的缓存功能,以及如何使用这些新功能改进 ASP.NET 应用程序的性能和可扩展性.(本文包含一些指向英文站点的链 ...

  9. ASP.NET 2.0 中的资源与本地化

    转自MSDN 下载本文的代码:BasicInstincts2006_08.exe (878KB) 本页内容 控制页面级别的区域性设置 使用配置文件跟踪语言首选项 ASP.NET 2.0 中的资源文件 ...

  10. ASP.NET 2.0 中的新增服务、控件与功能概述(四)

    原文出自http://blog.sina.com.cn/s/blog_48b6cd65010004fc.html 个性化 另一个新增的服务是个性化,它提供了一种现成的解决方案,用于解决存储站点用户的个 ...

最新文章

  1. 企业区块链应用程序的两个关键问题
  2. Oracle学习之段区块初步概念
  3. linux系统下一个冷门的RAID卡ioc0及其监控mpt-status
  4. 利用ISA2006封杀QQ2010
  5. 学三极管能遇到这篇巧文,我太幸福了!
  6. 2.2 .this的绑定规则
  7. 【ES6(2015)】Generator
  8. vue2.0音乐播放器
  9. 一个经典的多线程同步问题
  10. js实现的笛卡尔乘积-商品发布
  11. Audacity Mac版(音频录制编辑合成工具)中文版
  12. C++中vector的访问和赋值
  13. RIP总结(转自鸿鹄论坛)
  14. 数学模板-BSGSEXBSGS
  15. matlab 使用c2d的离散化笔记
  16. java中执行ddl语句,DDL(数据定义语言)
  17. SAP系统常用配置参数设定
  18. 程序员创业:小程序开发费用报价表,包含项目工期和费用明细
  19. python外包挺多,但具体什么价位呢,今天我们来采集一下外包网~
  20. boost::python::detail::destroy_referent相关的测试程序

热门文章

  1. php dom对象,JavaScript_JavaScript DOM 对象深入了解,什么叫DOM,DOM是文档对象模型( - phpStudy...
  2. leetcode 617. 合并二叉树(Merge Two Binary Trees)
  3. java设计模式在java中的应用
  4. 站内搜索(ELK)之数据目录
  5. A. httpd常见的几个操作
  6. html之页面元素印射
  7. 1018. Public Bike Management (30)
  8. Redmine管理项目1-自定义属性
  9. 《工作型PPT设计之道》培训心得
  10. TiDB 源码阅读系列文章(九)Hash Join