2017-02-25 33 views
2

我是从吉尔取代我的应用程序内部序列化到邦德C#的DateTime序列化与微软的债券

我使用Ms Bond属性切换简单的类,一切正常,直到我得到一个DateTime。 然后我有一个字典KeyNotFound异常序列化过程中的错误。

我怀疑邦德不支持DateTime,是这样吗? 如果是这样,为什么不实施? DateTime不是一个基本的类型,但添加一个自定义转换器是不值得的,速度增益vs protobuf-net是最小的,我不需要泛型,只需简单的快速de/serializer。

我希望我失去了一些东西,我真的想用邦德,但我需要一个简单的工具也是如此,因为一些基本的东西像一个日期或GUID是默认不支持我不能冒险打破了应用程序。 经过数小时的研究,我在这里写下了C#bond的年轻指南,并没有清楚地提及什么是什么,什么是不支持的。

回答

1

不,Bond中没有内置时间戳类型。 Bond中的内置类型记录在manual for the gbc compiler中。

对于GUID,有Bond.GUID,其中有implicit conversions往返于System.Guid。需要注意的是Bond.GUID生活bond.bond,所以如果你想从.bond文件指的这一点,你需要use Bond's import functionalityimport "bond/core/bond.bond"

有说明如何使用DateTime with a custom type alias的例子。

究其原因,在邦德没有内置的时间戳类型是有这么多不同的方法(和标准)为代表的时间戳。还有一个类似的C++ example,显示用boost::posix_time::ptime代表时间,突出显示时间表示的各种不同方式。

我们的经验是,项目通常已经有了,他们希望使用时间戳的表示,因此,我们建议使用一个转换器,这样就可以使用适合您的情况表示。

作为一个附注,我的经验是DateTimeOffset是一个更普遍有用的类型,与DateTime相比。