从孤立的存储中检索列表

时间:2013-08-02 12:44:26

标签: c# list serialization windows-phone isolatedstorage

我正在尝试将自定义类的列表保存到isolatedstoragesettings,但要么它没有正确保存,要么没有正确检索,我不确定是什么错误,

类:

[DataContract()]
public class Object
{
    public int ID { get; set; }
    public bool IsDeleted { get; set; }
    public bool IsActive { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public string Synopsis { get; set; }
    public string Body { get; set; }
    public string ImageUrl { get; set; }
    public string CreationDate { get; set; }
    public string LastUpdateDate { get; set; }
    public string DisplayUntilDate { get; set; }
    public int TotalViews { get; set; }
    public Gallery Gallery { get; set; }
}

然后我用它来保存它

 List<Object> to_save = new List<Object>();

//填充对象列表,这可以正常工作,它只是一个很大的对象列表 然后

 var settings = IsolatedStorageSettings.ApplicationSettings;
   //save to_save to isolated storage
            settings.Add("Stories", to_save);
            settings.Save();

然后当我尝试检索它时:

//从隔离存储中获取详细信息

        var settings = IsolatedStorageSettings.ApplicationSettings;
        List<Object> s = settings["Stories"] as List<Object>;

它只是给我2个项目都是null,我想我正在做序列化错误,但我不知道正确的方法,有人可以帮忙吗?

编辑:

好的我已经为每个字段添加了datamember,现在返回的2个项目不是null并且包含正确的值,但它不是整个列表,我如何检索整个列表,而不仅仅是2个项目?

1 个答案:

答案 0 :(得分:0)

您必须拥有强类型对象才能序列化,因为Windows Phone上的序列化程序非常基础。

此外,对于隔离存储,仅使用基本数据类型,因此您的“图库”对象可能不会被序列化。

请注意,实际上并不需要数据协定和数据成员属性来进行简单的序列化,但不应该使用它来损害它。

如果您想进行更复杂的序列化,请查看XMLSerialiser