2011-09-09 61 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)。 –