在漫游设置中存储复杂数据类型

时间:2013-02-06 06:43:55

标签: c# exception-handling windows-store-apps roaming

我想要什么:我正在尝试在漫游设置中存储复杂的数据类型。这就是我的对象的样子:

public abstract class Query
{
    [DataMember]
    public Cube Cube { get; private set; }

    [DataMember]
    public List<Filter> Filters { get; private set; }
    [DataMember]

    public Slicer Slicer { get; set; }
}

问题是什么

Query q = ...;
RoamingSettings.Values["query"] = q;

发出错误:

  

不支持数据类型

我尝试了什么:在复合设置的不同字段中存储Query类的不同成员。但是Query类的数据成员又是不同类的对象,因此不能存储在composite.Values [“setting”]中。

请参阅:windows 8 app roaming storage with custom class。使用复合设置回答了这个问题,但不适用于我的。

我该如何处理?

1 个答案:

答案 0 :(得分:0)

Ankush,

看起来你正在尝试将一组自定义对象推送到RoamingSettings中,这不是它的意思。本地/漫游设置通常存储在注册表中,用于简单的名称 - 值对。

这个怎么样 - 你把整个对象模型拿出来作为文件来存储?这样,您可以轻松地序列化/反序列化数据,并在需要时在应用程序中对对象模型进行水合/脱水。此外,展平的内容可以保存在漫游文件夹中,以便跨多个用户设备进行同步。只需根据需要注释自定义对象属性,并使用DataContractSerializer展平/取消标记数据并在漫游文件夹中保留XML文件。只是不依赖于即时云同步; Windows将以机会方式同步漫游文件夹中的文件。

这个MSDN快速入门应该有所帮助:

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700362.aspx

谢谢!