2011-09-09 103 views
0

我之前使用過隔離存儲來保存文本文件,xml文件和圖像。但是,是否有可能使用IsolatedStorage或windows phone 7中的任何其他資源保存類型爲IEnumerable的變量?將IEnumerable保存在隔離存儲中

感謝,

回答

2

你誤會核心概念..有沒有這樣的事情「節能變量」,爲您節省的對象。你的變量指向一個對象,並且這個對象實現了IEnumerable。在WP7上,它是對象的實際類,它確定該對象是否可以序列化並直接存儲在ISO上。如果該實際集合類不支持序列化,則必須將其當前所有元素重新包裝到List/Array/Dictionary/Stack/Queue中 - 無論支持序列化的是什麼 - 並將其存儲而不是。

一旦你有一個序列化的集合,然後你的儲蓄代碼被減小到微不足道的東西爲:

IsolatedStorageSettings.ApplicationSettings["blah"] = your_serializable_collection; 
IsolatedStorageSettings.ApplicationSettings.Save(); 

,並在一般情況下,僅此而已。檢索是相似的:

var items = (SomeCollection)IsolatedStorageSettings.ApplicationSettings["blah"]; 

其中SomeCollection可能是一個IEnumerable,一個列表/數組/詞典/堆棧/隊列 - 無論你放那裏,無論是通過實際的集合類實現。

如果你願意,你可以使用IsolatedStorageFile並直接寫入文件,但除非你有一個很好的理由 - 有它沒有意義的,因爲使用普通的字典是遠遠simplier。

在我的其他職位,你會發現一些鏈接: How to do isolated storage in Wp7?

1

用於保存/載入數據一覽表中可序列化開箱即用的。我最後一次嘗試反序列化一個IEnumerable我有錯誤...

+0

確定這是容易的,因爲我們可以很容易地列表和IEnumerable之間進行切換。 你能否提供保存和加載列表的代碼,因爲我在網上搜索,什麼也沒找到。 – Ameen

+0

使用您選擇的序列化程序,如[在此寫入](http://j2i.net/BlogEngine/post/2011/02/10/Simple-Data-Serialization-on-WP7.aspx)。 –