2010-05-23 45 views
1

這是一個三部分問題。使用將一個將文件設置爲序列化字典

Dictionary<String,Object> 

是保存數據的好辦法哪裏會

Dictionary<Key,Value> 

爲基礎:

的人嗎?

二:沒有使用app.settings或xml,會是更好的方法嗎?

三:你會如何將這個(或更好的解決方案)序列化爲緊湊且快速序列化的二進制格式?


Xml非常詳細,我正在尋找二進制由於它的大小。
另外,如果我使用的字典,它本來是很容易使一個設置類簡單

GetValue(Key) and SetValue(Key,Obj) 
or object.SetValue(Settings,Key) using extensions. 

:我將我的應用程序打開的插件,所以我想對所有的應用程序使用的設置一個統一的規範。

如果我可以將它序列化到一個文件中,使用Dictionary作爲基礎來滾動我自己的類。

+0

爲什麼不只是使用app.settings?它出什麼問題了? – 2010-05-23 12:17:24

+0

xml非常詳細,我正在尋找二進制由於它的大小。 此外,如果我使用Dictionary,使用擴展名可以簡單地使用GetValue(Key)和SetValue(Key,Obj)或object.SetValue(Settings,Key)設置一個設置類。 我正在讓我的應用程序爲插件打開,所以我想要一個統一的規範來設置所有應用程序使用。 如果我可以將它序列化到一個文件中,使用Dictionary作爲基礎來滾動我自己的類。 – akshaykarthik 2010-05-23 12:31:11

回答

1

嘗試使用protobuf-net。這可以解決你所有的三個問題。我上週查看了它,並在短短几天內替換了我的整個基於xml的消息傳遞基礎結構。 Marc Gravell經常在這裏工作,他在回答我的問題時非常及時,樂於助人。

+0

我將如何使用此設置?它可以序列化字典嗎? – akshaykarthik 2010-05-23 13:39:14

+0

是的,你可以序列化一本字典。事實上,我在我的解決方案中做到了這一點。 對於「設置」我認爲你的意思是你想存儲一些值並在以後恢復它們,如保存/加載? 這很簡單。你會把你想要保存的對象,生成一個序列化的表示,然後保存。然後在你喜歡的時候反序列化它。 唯一的問題是,protobufs以非常緊湊的二進制形式保存東西,所以你將無法在視覺上識別出東西被正確保存。但它仍然有效。 – Carlos 2010-05-23 13:50:14

+0

是否支持泛型,因爲字典仍然會序列化?由於這是一個字典的包裝,protobuf-net會將設置類中的字典實例序列化嗎? 基本上,我在字典中提供了一個鍵值系統,其中鍵和值都需要序列化。 對不起,如果我聽起來有點不好意思,我還在學習編程。 – akshaykarthik 2010-05-23 14:19:26