C# protobuf网络编码日期时间UTC解码本地时间

C# protobuf网络编码日期时间UTC解码本地时间,c#,.net,datetime,protobuf-net,C#,.net,Datetime,Protobuf Net,protobuf net是否有一种方法可以自动以UTC编码日期时间值,但用ToLocalTime解码 我在不同时区的系统之间传递消息,希望我的DTO中的每个DateTime属性都序列化为UTC(基本上在编码之前自动调用ToUniversalTime)并在LocalTime中解码,以便自动接收消息的系统可以在LocalTime中对DateTime属性进行操作,因此,开发人员不必记得为通过线路接收的DTO在每个属性上调用ToLocalTime?对于这种类型的转换,通常的方法是有两个属性: [Prot

protobuf net是否有一种方法可以自动以UTC编码日期时间值,但用ToLocalTime解码


我在不同时区的系统之间传递消息,希望我的DTO中的每个DateTime属性都序列化为UTC(基本上在编码之前自动调用ToUniversalTime)并在LocalTime中解码,以便自动接收消息的系统可以在LocalTime中对DateTime属性进行操作,因此,开发人员不必记得为通过线路接收的DTO在每个属性上调用ToLocalTime?

对于这种类型的转换,通常的方法是有两个属性:

[ProtoMember(n, ...)]
public DateTime When { get; set; }

public DateTime WhenLocal => When.ToLocal(); // etc

序列化程序不会关心没有该属性的序列化程序。如果您真的不希望调用方使用序列化程序属性,那么序列化程序属性可能是私有的。

谢谢您-您对如何在不更改models/DTO的?@TJF分部类的情况下实现相同的功能有何建议?扩展方法?我真的希望在编码/解码级别处理这个问题。我们使用多种编码协议来移动DTO,我们在那里实现了DateTime编码来自动处理这一问题。我们现在正在寻找一个protobuf端点,同时以同样的方式使用我们预先存在的DTO。protobuf库是否允许重写类型的序列化/反序列化行为?@TJF当前不允许;在3.0里程碑中,几乎可以肯定会有一个新的API,因为关键的可交付成果是构建时C#序列化程序生成。基本上,考虑
IProtoSerializer
提供定制的
序列化(ProtoWriter-writer,在T-obj中)
反序列化(ProtoReader-reader,ref T-obj)
方法。这个API可能还允许您注入自己的行为,尽管这只是一个令人愉快的副作用,而不是新API的主要目的。我目前没有3.0版的预计到达时间