我正在使用 MVVM 模式在 WPF 中开发基于文本的游戏。我想使用二进制序列化来保存和加载游戏,就像我使用 WinForms 时所做的那样,但对于这种模式,我不知道如何正确执行此操作。哪些类需要序列化以保留必要的数据?还有什么需要注意的吗?
哪些类需要序列化以保留必要的数据?
这听起来可能是循环,但是:无论你需要保存什么。有时这可能是您的领域模型 - MVVM 中的 M。如果这在您的模型中不是很明显,那么我会说:添加一个新的 DTO 层。这个 DTO 模型很简单:您想要存储的内容。然后您可以保存和加载而不影响系统的其余部分。显然,您需要一些代码来映射到 DTO 模型或从 DTO 模型以及您正在使用的任何模型进行映射。
还有什么需要注意的吗?
如果您所说的“二进制序列化”是指
BinaryFormatter
,那么请非常小心 - 当您对应用程序进行版本控制时,它可能会很脆弱。还有其他序列化器以基于二进制(而不是文本)的格式进行读/写,但它们比 BinaryFormatter
更少……繁琐。