5

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

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 自定义类漫游存储。这个问题是通过使用复合设置来回答的,但不适用于我的。

我该如何进行?

4

1 回答 1

0

安库什,

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

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

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

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

谢谢!

于 2013-02-06T23:20:17.633 回答