隔离存储和保存多个对象

我想知道创建保存和加载逻辑的最佳方法是什么,以便我可以保存和加载x项。 例如,在Isolated Storage中,我可以通过这样做轻松保存复合/ POCO对象:

var settings = IsolatedStorageSettings.ApplicationSettings; settings.Add("key", myObject); 

像这样加载:

 var settings = IsolatedStorageSettings.ApplicationSettings; return settings["key"] as MyObject; 

但是如何从IsolatedStorage加载x个对象? 是否最好创建一个List集合并保存,每当我想保存另一个对象时,我基本上加载现有的并执行.Add(newObject)并再次保存?

所以这样的事情:

 List myObjects = new List(); myObjects.Add(newObject); settings.Add("myObjects", myObjects); 

并在加载时:

 var myObjects = settings["myObjects"] as List; 

但是,这需要删除并添加回来作为settings.Add需要一个唯一的密钥。 这会是最好的方法吗?

我宁愿使用设置而不是Iso文件。

由于MSDN:IsolatedStorageSettings提供了一种将用户特定数据存储为本地IsolatedStorageFile中的键值对的便捷方式。 典型用法是保存设置,例如每页显示的图像数,页面布局选项等。

所以我不认为使用IsolatedStorageSettings是你最好的选择,如果我是你,我会使用IsolatedStorageFile。

要保存和加载列表的内容,方案将是

1-如果在列表中添加或删除项目,则将列表searlize到xml并保存它IsolatedStorageFile

  private static void Serialize(string fileName, object source) { var userStore = IsolatedStorageFile.GetUserStoreForApplication(); using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Create, userStore)) { XmlSerializer serializer = new XmlSerializer(source.GetType()); serializer.Serialize(stream, source); } } 

2-如果要在任何地方加载列表,可以反序列化存储在IsolatedStorageFile中的xml文件

 public static void Deserialize(ObservableCollection list , string filename) { list = new ObservableCollection(); var userStore = IsolatedStorageFile.GetUserStoreForApplication(); if (userStore.FileExists(filename)) { using (var stream = new IsolatedStorageFileStream(filename, FileMode.Open, userStore)) { XmlSerializer serializer = new XmlSerializer(list.GetType()); var items = (ObservableCollection)serializer.Deserialize(stream); foreach (T item in items) { list.Add(item); } } } }