gpt4 book ai didi

c# - protobuf 网络 : how to represent DateTime in C#?

转载 作者:太空狗 更新时间:2023-10-30 01:31:47 24 4
gpt4 key购买 nike

protogen.exelong 类型的 proto2 消息字段生成此模式:

private long _Count = default(long);
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"Count", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
[global::System.ComponentModel.DefaultValue(default(long))]
public long Count
{
get { return _Count; }
set { _Count = value; }
}

但由于 proto2 不包含日期时间类型(并且 protobuf-net 不支持包含 google 的 proto3 .protobuf.Timestamp ) 不清楚如何在手动编码的 C# 原型(prototype)对象中表示 DateTime

这可能是错误的:

private DateTime _When = DateTime.MinValue;
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"When", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(DateTime.MinValue)]
public DateTime When
{
get { return _When; }
set { _When = value; }
}

装饰 DateTime 属性以用于 protobuf-net 的正确方法是什么?

最佳答案

这取决于您希望它在电线上看起来像什么。如果您希望它是一个 long(纪元的增量),那么:这样做。例如:

[ProtoMember(...)] public long Foo {get;set;}

如果您希望它在网络上是一个long,在您的代码中是一个DateTime:那么做:

 public DateTime Foo {get;set;}
[ProtoMember(...)] private long FooSerialized {
get { return DateTimeToLong(Foo); }
set { Foo = LongToDateTime(value); }
}

如果您不关心并且只想存储一个DateTime,那么这样做:

[ProtoMember(...)] public DateTime Foo {get;set;}

关于c# - protobuf 网络 : how to represent DateTime in C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com