protobuf-net 如何序列化 DateTime?

Posted

技术标签:

【中文标题】protobuf-net 如何序列化 DateTime?【英文标题】:How protobuf-net serialize DateTime? 【发布时间】:2014-06-04 11:33:32 【问题描述】:

我正在开发一个由客户端/服务器组成的项目。客户端用 Python 编写(将在 linux 上运行),服务器用 C# 编写。我正在通过标准套接字进行通信,并且正在使用 protobuf-net 进行协议定义。但是,我想知道 protobuf-net 如何处理 DateTime 序列化。 Unix datetime 与 .net 标准 datetime 不同,我应该如何处理这种情况?

谢谢

【问题讨论】:

可以自己使用Reflector或者IlSpy查看例程的源码 【参考方案1】:

DateTime 是通过多字段消息进行欺骗的,该消息并非微不足道,但并非无法理解。事后看来,我希望我以不同的方式做到这一点,但事实就是如此。该定义在 protobuf-net 项目的 bcl.proto 中可用。

但是!如果您面向多个平台,我强烈建议您在 DTO 模型中简单地使用 long 等,表示某个时期的某个时间粒度(例如,自 1970 年以来的秒或毫秒)。

【讨论】:

@marc-gravell 我需要解析由 Python 中的 .Net 编码程序发送的原始消息。如何解析 .Net 编码的日期时间?什么是编码。我找不到 blc.proto。 @efficks 你有没有偶然问过同样的 github 问题?我在那里回答,包括指向架构的链接

以上是关于protobuf-net 如何序列化 DateTime?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ProtoBuf-Net,如何(反)序列化多维数组?

C# Protobuf-net:如何从网络流中连续反序列化?

如何通过 ProtoBuf-net 使用 DateTimeKind 选项序列化 DateTime 字段

如何使用 protobuf-net 反序列化 .asmx webservice 中指定的对象

如何以编程方式确定类型是不是可以通过 protobuf-net 本地序列化?

如何使用 protobuf-net 序列化/反序列化锯齿状/嵌套数组?