在配置文件(.settings、.config)中存储自定义对象
引言
我前面曾寫過一篇《使用配置文件(.settings、.config)存儲應用程序配置》,我在其中指出“settings無法實現對一些復雜類型及自定義類型的支持”。
而今天我發現其實它是支持自定義類型的,僅僅是不能支持本項目中的自定義類型,可以支持引用的項目或類庫的自定義類型。至于為什么不支持本項目中的自定義類型,我也不得而知,猜想可能是怕加載時造成沖突吧。
?
范例
我們來做一個使用自定義類型的配置文件范例。
首先新建一個類庫項目,我這里以SettingTest2命名該項目,然后創建下面這樣一個簡單的類:
public?class?MyClass
{
????public?DateTime?time
????{
????????get
????????{
????????????return?_time;
????????}
????????set
????????{
????????????_time?=?value;
????????}
????}
????private?DateTime?_time;
?
????public?int?num
????{
????????get
????????{
????????????return?_num;
????????}
????????set
????????{
????????????_num?=?value;
????????}
????}
????private?int?_num;
}
由目前所知的情況看來,配置文件不支持泛型集合,所以當我們需要存儲自定義類型的集合的時候,就要再創建一個用來存放該自定義類型集合的類:
public?class?MyClassList
{
????public?List<MyClass>?list
????{
????????get
????????{
????????????return?_list;
????????}
????????set
????????{
????????????_list?=?value;
????????}
????}
????private?List<MyClass>?_list;
}
這樣這個類庫項目就搞好了,下面再建立一個控制臺項目用于測試。
引入剛才的項目:
創建配置文件,建立一個新屬性名為“MyClassList”,在其類型列表中點擊最下面的“瀏覽…”,即可在彈出的對話框中找到剛才我們創建的類:
在程序中編寫測試代碼:
static?void?Main(string[] args)
{
????//初始化隨機數生成對象
????Random?r?=?new?Random();
????//驗證是否為空,如果為空的話就初始化一下
????if?(Settings1.Default.MyClassList?==?null)
????{
????????Settings1.Default.MyClassList?=?new?SettingTest2.MyClassList();
????????Settings1.Default.MyClassList.list?=?new?List<SettingTest2.MyClass>();
????}
????//遍歷輸出所有項
????foreach?(var?f?in?Settings1.Default.MyClassList.list)
????{
????????Console.WriteLine(string.Format("{0}:{1}", f.num, f.time));
????}
????Console.Read();
????//添加一條新項,并保存配置
????Settings1.Default.MyClassList.list.Add(new?SettingTest2.MyClass?{ num?=?r.Next(1000), time?=DateTime.Now });
????Settings1.Default.Save();
}
不斷運行、關閉程序,以測試配置文件的使用情況:
?
很完美哈,再來看看生成的配置文件代碼:
很好,跟我們自己XML序列化的沒多大區別。
?
結語
這樣一來,我們就能以面向對象的方式操作程序配置,又不用自己費力寫序列化代碼了,請各位善加利用吧:)
另外,關于泛型類型的支持,我覺得應該也是可以的吧,畢竟自定義類型中包含泛型集合的情況都可以被很好地支持,但沒找到設置方法,難道說要手動改寫配置文件了?期待高手解答。
?
下載
本文的XPS版本:http://www.uushare.com/user/icesee/file/2273504
本文轉自斯克迪亞博客園博客,原文鏈接:http://www.cnblogs.com/SkyD/archive/2009/11/30/1614121.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的在配置文件(.settings、.config)中存储自定义对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# MBG 扩展方法类库 分享
- 下一篇: mysql基础(九) 索引和视图