【发布时间】:2012-10-06 07:27:38
【问题描述】:
我想将新闻应用提交到 Windows 应用商店,但它总是无法通过应用认证过程(提交前的本地检查),因为我在应用挂起时使用 XmlSerializer 将数据序列化为 XML 文件(OnSuspended-Event )。当我不序列化时,应用程序成功通过了此认证过程...
documentation 建议如下:
当你序列化你的数据时,你应该避免重新序列化 没有改变。序列化和保存数据需要额外的时间, 加上激活应用程序时读取和反序列化它的额外时间 再次。相反,我们建议应用确定其状态是否 实际改变了,如果是这样,只序列化和反序列化数据 改变了。
我真的很喜欢这个想法,但不幸的是不知道如何实现它。我有一个包含新闻项目的集合(在应用程序启动时下载),用户下载这些新闻项目的详细信息。所以,基本上在暂停时,我只应该序列化这些细节,并且可以在初始加载后序列化新闻项目。我怎样才能做到这一点?
感谢您的帮助!
【问题讨论】:
-
我猜操作系统会检测到您写入的文件与以前的内容完全相同。您可以通过每次序列化
Guid.NewGuid()来解决此问题。 -
@usr。非常感谢您的宝贵意见。这是一个很好的观点:我现在添加了一个全局变量,我检查它是否发生了变化。有了这个,我终于可以通过认证要求流程了。 - 有人知道如何仅序列化更改的项目而不是所有内容吗? - 谢谢。
-
没有内置这样的功能。实现这一点需要做很多工作。如果你只序列化几个 KB,我真的不会打扰它(因为它没有区别),只需添加一个随机值来作弊通过要求。
-
@usr: 那么如果它大约是 400 KB 并且可以轻松增长到 1 MB? - 无论如何,序列化确实很快,但我不希望应用程序的这一部分出现任何麻烦......目前,我只在有变化时进行序列化。否则我序列化任何东西都没有意义,因为我已经这样做了......谢谢
标签: c# serialization windows-8 microsoft-metro xmlserializer