1

我正在创建一个 Windows 8 应用程序,它需要包含两种主要类型的数据 -List<Project>List<User>,其中ProjectUser是包含不同类型数据(包括List其他对象等)的数据模型。

我之前一直在制作 Windows Phone 应用程序,我只是在类似的场景中使用应用程序设置来存储数据。所以我希望这也适用于 Windows 8。

我选择使用ApplicationData.Current.LocalSettings-structure 来保存我的应用程序数据。但是,每当我尝试保存数据时,都会收到此类错误:

WinRT 信息:尝试序列化要写入应用程序数据存储的值时出错附加信息:不支持此类型的数据。

[DataContract]如果有任何区别,模型会标有属性。

据我了解 Microsoft,只能以这种方式保存标准数据类型(如布尔值、字符串等)。它是否正确?

如果是这样,我该如何保存以这种方式结构化的数据?

帮助将不胜感激!

4

1 回答 1

3

复杂的类型会引起一些悲伤,我无法确认这是不可能的,但还有其他选择。

在我想在没有数据库引擎开销的情况下存储应用程序数据的情况下,我使用序列化。根据您的类型的组成(归结为简单的数据类型并具有公共 getter/setter),您可以使用 XML 序列化和/或二进制序列化。

在能够方便地查看(编辑)应用程序范围之外的数据的情况下,XML 序列化可能更可取。(调试等)但是,除非您选择手动编码自定义序列化程序,否则它会对数据施加更多限制。二进制序列化更加灵活,并结合压缩和加密为您提供了更多紧凑/伪装/安全的数据存储选项。(如果使用,压缩/解压缩和加密会花费一些额外的时间。)

不幸的是,二进制文件不太适合将某些内容粘贴到本地应用程序数据中,而无需先将其转换为 Base64 字符串。(导致潜在的巨大文本块)通常使用序列化选项,我会考虑将文件保存在用户具有足够权限的指定文件夹中。

于 2012-09-26T02:26:04.130 回答