C#開發中使用配置文件對象簡化配置的本地保存


C#開發中使用配置文件對象簡化配置的本地保存

 

0x00 起因

程序的核心是數據和邏輯,開發過程中免不了要對操作的數據進行設置,而有些數據在程序執行過程中被用戶或程序做出的修改是應該保存下來的,這樣程序在下次運行時可以保留上次的一些設置。同樣有時我們希望修改某些設置而不需要重新編譯程序,這樣也可以通過修改本地配置文件達到目的。之前在網上看到過一篇文章,講的是小程序或測試類的程序應該追求效率,相關配置完全可以硬編碼到代碼里,無需寫到配置文件里。關於什么屬於小程序並沒有一個明顯的界定,至於要不要寫到配置文件里這是仁者見仁的問題。我個人還是比較傾向與寫到配置文件的。當然,對於腳本語言來說這個問題就小很多了。

那么如何能快捷方便的保存配置信息呢,這次寫的這個類就是嘗試去解決這個問題的。主要包括創建和載入配置文件、以鍵值對的形式保存和讀取配置信息。在配置信息的保存方式上可以使用XML或者JSON,我選了XML,一方面是閱讀起來比較容易,手動修改也方便,另一方面是.NET本身提供XmlDocument類幫助操作XML文件,這樣我們只要在此基礎上進行一下包裝就可以了。

0x01 基本功能的實現

1.配置文件的加載和創建

public static ConfigFile LoadFile(string filename)

用用戶加載配置文件,如果文件保護存在則返回null

 

public static ConfigFile LoadOrCreateFile(string filename)

用於加載配置文件,如果文件不存在則創建一個新對象並調用CreateFile()創建配置文件。

 

protected virtual void CreateFile()

這個是virtual方法,可以根據需求在子類中重寫。

 

2.配置信息的保存

以下方法都是為了簡化操作,對AddOrSetKeyValue的包裝

 

public void AddOrSetConfigValue(string key, string value)

可以將鍵值對保存在Root/Config節點下,key不存在則創建新key,key已存在則更新值。

 

Public void AddOrSetConfigValue<T>(string key, T value)

可以將任意類型存入Root/Config節點下,value調用ToString()方法轉為string。

 

3.配置信息的讀取

以下方法都是對GetKeyValue的包裝

配置以鍵值對的方式保存,這是個最簡單的情況。值的讀取都是在Root/Config節點下。

public string GetConfigValue(string key)

根據key從固定的XPath中獲取值

 

public bool TryParseConfigValue(string key, out result)

有多個重載,可以根據key取出值並調用相應的TryParse方法進行類型轉換,返回false表示轉換失敗,結果通過result傳出。轉換失敗時result為類型默認值。

 

public XXX GetConfigKeyValueIXXX(string key)

根據key獲取值並轉化為XXX類型,轉化失敗拋出異常。

 

4.使用帶參數的屬性簡化鍵值操作

為了能盡量使操作用着方便,對於string類型的值提供了建議的操作方法,可以通過:

config[“key”]的方式取值,通過config[“key”]=”test”的方式保存。

 

0x02 功能的擴展

ConfigFile類型只是提供了一個很簡單的框架,如果對配置保存有其它需求可以繼承該類型並重寫CreateFile方法,以在此基礎上修改或創建完全不同的配置文件結構。

對GetKeyValue和AddOrSetKeyValue方法包裝可以添加新方法以快速讀取和保存配置信息。

0x03 測試例子

這個類的使用非常簡單,用靜態方法創建或載入一個配置文件即可方便的進行讀取和保存的操作。

測試代碼:

 

測試結果:

保存的配置文件:

0x04 相關下載

https://github.com/durow/TestArea/tree/master/ConfigFileTest

 


更多內容歡迎訪問我的博客:http://www.durow.vip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM