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

标签 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;

报错:

Data type not supported

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

请引用:windows 8 app roaming storage with custom class .该问题已使用复合设置回答,但不适用于我。

我该如何继续?

最佳答案

安库什,

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

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

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

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

谢谢!

关于c# - 在漫游设置中存储复杂数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723132/

相关文章:

c# - 如何恢复与 WCF 的连接?

c# - 在这种情况下我将如何使用 LINQ2XML?

xaml - 项目模板中的 ListView 视觉状态管理器(WinRT、Metro、XAML)

c# - 请求无法完成(未找到)

javascript - 是否可以在带有 HTML5 的 Windows 应用商店应用程序中使用 .net(C#) 编译的 dll?

C# 或 C++ 沙盒程序集

c# - StreamWriter 正在写回车?

c++ - "checking for self-assignment"有什么问题,它是什么意思?

c++ - 如何使用非指针属性的析构函数

ruby-on-rails - 在 Ruby 中开始、拯救和确保?