保存和读取属性配置的技巧

在编写程序时,我们常需要保存属性配置信息,例如某WinForm程序,点击“打开文件“按钮,会启动一个对话框,提示用户选择文件。如果用户不是第一次点击,将对话框启动路径设置为上次打开的路径,往往能节省用户的时间,提升程序使用体验。那么如何保存、读取属性配置信息呢?

一个很容易想到的办法是建立一个配置文件,如Config.xml,来保存配置信息。这种办法一方面需要自己编写文件读写代码,实现起来麻烦,另一方面,由于配置文件与程序独立, 存在配置文件被用户误删除、误编辑的情况,可能会造成意想不到的后果。事实上,使用C#编写程序时,可以使用程序自带的属性配置功能。

在C#项目"解决方案资源管理器"中,,有一个Properties节点,点击展开后,如下图所示

双击Setting.settings后,出现一个编辑器,使用它可以创建、编辑、管理配置信息, 下面每一行为一条设置信息。

 

每条信息包括名称(Name)、类型(Type)、范围(Scope)、值(Value)4个属性。

  • 类型可以是包括自定义类型的任何类型,为了 程序简单,一般情况下用简单类型为好。
  • 范围也称为“作用域”,有两种作用域,一种用户,一种应用程序。区别简单说,用户设置在程序启动后还可以改,配置本身被保存到User.config中, 而应用程序设置只能用来加载,只能通过修改与程序关联的.exe.config文件来更改设置。
  • 值为配置的实际内容。

配置信息的使用

读取 

this.OpenDir =  Properties.Settings.Default.OpenDir;

保存

Properties.Settings.Default.OpenDir = openDir;
Properties.Settings.Default.Save();

可以使用多组配置信息,添加方法是为项目添加新建项“配置文件”,然后编辑新的配置信息表。

 

在程序设置阶段,可以从项目的Properties文件夹下看到一些有趣的东西,该文件夹下有5个文件,对应解决方案管理项的3个Item。
观察Settings.Designer.cs文件,配置信息里的变量放在了*.Properties命名空间下,该命名空间里实现了Settings类。

Settings类继承自System.Configuration.ApplicationSettingsBase,含有一个Settings类型的静态成员Default,该对象只实现了get方法,这是很容易理解的。

其他成员均实现了get和set方法,很容易看出Settings类里重构了[]方法。由此,我们可以把{Name:Value}当成键值对,那么Settings中存在着一个字典。

Settings.settings本质是一个xml文件,在编辑器里编辑配置时,可以发现该文件是和Settings.Designer.cs同步变化的。

 

在Settings.Designer.cs里,将this.Save()写到set方法里,可以实现更频繁、实时的更新配置信息。而在Settings.Designer.cs外,可以在合理的位置使用Properties.Settings.Default.Save()方法,及时地保存配置信息。

 

Resources.*文件保存了与资源有关的文件,AssemblyInfo.cs含有文件版本等信息。两者用途在其他地方。

参考了MSDN帮助:

https://msdn.microsoft.com/zh-cn/library/aa730869.aspx

https://msdn.microsoft.com/en-us/library/aa730869.aspx

网上有很多文章都是从msdn里Copy的(还是可以用来参考),如

http://blog.csdn.net/lst0257/article/details/6930435

posted @ 2016-06-15 21:49  weepingdog  阅读(276)  评论(0编辑  收藏  举报