【问题标题】:Save/Load a game in MVVM via Binary Serialization [closed]通过二进制序列化在 MVVM 中保存/加载游戏 [关闭]
【发布时间】:2013-05-30 16:46:46
【问题描述】:

我正在使用 MVVM 模式在 WPF 中开发基于文本的游戏。我想使用二进制序列化来保存和加载游戏,就像我在使用 WinForms 时所做的那样,但是对于这种模式,我不知道如何正确地做到这一点。哪些类需要序列化以保留必要的数据?还有什么我需要注意的吗?

编辑:如果你要否决这个问题,至少解释一下原因。

【问题讨论】:

  • -1 Which classes need to be serialized to preserve the necessary data 取决于您的代码。 应该知道哪些数据是必要的。
  • 我不知道 MVVM 中是否存在某种约定。很抱歉询问并尝试学习如何正确地做事。
  • 如 i4v 所说;任何需要持久化的数据都必须序列化。简单看一下 MVVM,如果 View 和 ViewModel 是由 Model 驱动的,那么 Model 是唯一应该需要序列化的东西。如果 ViewModel 不完全由模型驱动,那么您需要序列化其中的一部分。这完全取决于您对模式的实现。

标签: c# serialization mvvm


【解决方案1】:

需要序列化哪些类来保存必要的数据?

这听起来可能很循环,但是:无论您需要保留什么。有时这可能是您的域模型 - MVVM 中的 M。如果这在您的模型中不是很明显,那么我会说:添加一个新的 DTO 层。这个 DTO 模型很简单:你想要存储什么。然后您可以保存和加载而不影响系统的其余部分。显然,您需要一些代码来映射到 DTO 模型以及您使用的任何模型。

我还有什么需要注意的吗?

如果您所说的“二进制序列化”是指BinaryFormatter,那么要非常小心——当您对应用进行版本控制时,它可能会变得脆弱。还有其他以基于二进制(而不是文本)的格式读/写的序列化程序,但它们比BinaryFormatter 少……繁琐

【讨论】:

  • 感谢您的回复。如果你不介意我问,其他的序列化器是什么?
  • @Dennis 我偏爱 protobuf(尤其是 protobuf-net)——但作为图书馆作者,我有偏见。 Thrift、msgpack、ice - 还有一些。
猜你喜欢
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多