2

我正在将我的应用程序中的内部序列化从 Jil 替换为 Bond

我正在使用 Ms Bond 属性切换简单的类,并且一切正常,直到我得到一个具有DateTime的类。然后我在序列化过程中遇到了Dictionary KeyNotFound Exception错误。

我怀疑 Bond 不支持 DateTime,是这样吗?如果是,为什么不实施?DateTime 不是基本类型,但添加自定义转换器不值得,与 protobuf-net 相比的速度增益很小,我不需要泛型,只需简单的快速反序列化器。

我希望我遗漏了一些东西,我真的很想使用 Bond,但我也需要一个简单的工具,我不能冒险破坏应用程序,因为默认情况下不支持 Date 或 Guid 之类的基本内容。经过数小时的研究,我在这里写信,而 C# Bond 的年轻指南并没有明确提到什么是支持的,什么是不支持的。

4

1 回答 1

1

不,Bond 中没有内置的时间戳类型。Bond 的内置类型记录在gbc 编译器的手册中

对于 GUID,有Bond.GUID,它具有到/从的隐式转换System.Guid。请注意,它Bond.GUID位于 bond.bond 中,因此如果您想从 .bond 文件中引用它,您需要使用 Bond 的导入功能import "bond/core/bond.bond"

有一个例子展示了如何使用DateTime自定义类型 alias

Bond 没有内置时间戳类型的原因是有很多不同的方式(和标准)来表示时间戳。有一个类似的C++ 示例显示了用 a 表示时间boost::posix_time::ptime,突出了表示时间的各种不同方式。

我们的经验是,项目通常已经有他们想要使用的时间戳的表示,因此,我们建议使用转换器,以便您可以使用适合您的情况的表示。

作为旁注,我的经验DateTimeOffset是,与DateTime.

于 2017-02-28T00:39:27.757 回答