将IEnumerable保存在独立存储中

时间:2011-09-09 07:20:39

标签: windows-phone-7

我之前使用隔离存储来保存文本文件,xml文件和图像。但是,是否可以使用 IsolatedStorage 或Windows Phone 7中的任何其他资源保存 IEnumerable 类型的变量?

谢谢,

2 个答案:

答案 0 :(得分: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,List / Array / Dictionary / Stack / Queue - 无论你放在那里以及实际集合类实现的是什么。

如果你愿意,你可以使用IsolatedStorageFile并直接写文件,但除非你有充分的理由 - 这里没有意义,因为使用通用字典要简单得多。

在我的其他帖子中,您会找到一些链接: How to do isolated storage in Wp7?

答案 1 :(得分:1)

用于保存/加载数据列表,这些列表可以开箱即用。上次我尝试反序列化IEnumerable时出错...