使用自定义类保留应用数据

时间:2012-09-26 00:36:22

标签: c# wpf serialization windows-8 data-persistence

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

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

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

  

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

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

据我所知understood Microsoft,只能以这种方式保存标准数据类型(如布尔值,字符串等)。这是对的吗?

如果是这样,我怎样才能保存以这种方式构建的数据?

非常感谢帮助!

1 个答案:

答案 0 :(得分:3)

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

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

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

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