在編寫程序時,我們常需要保存屬性配置信息,例如某WinForm程序,點擊“打開文件“按鈕,會啓動一個對話框,提示用户選擇文件。如果用户不是第一次點擊,將對話框啓動路徑設置為上次打開的路徑,往往能節省用户的時間,提升程序使用體驗。那麼如何保存、讀取屬性配置信息呢?

一個很容易想到的辦法是建立一個配置文件,如Config.xml,來保存配置信息。這種辦法一方面需要自己編寫文件讀寫代碼,實現起來麻煩,另一方面,由於配置文件與程序獨立, 存在配置文件被用户誤刪除、誤編輯的情況,可能會造成意想不到的後果。事實上,使用C#編寫程序時,可以使用程序自帶的屬性配置功能。

在C#項目"解決方案資源管理器"中,,有一個Properties節點,點擊展開後,如下圖所示

屬性處理臨時字段_java__配置文件

雙擊Setting.settings後,出現一個編輯器,使用它可以創建、編輯、管理配置信息, 下面每一行為一條設置信息。

屬性處理臨時字段_java__配置文件_02

每條信息包括名稱(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含有文件版本等信息。兩者用途在其他地方。