protogen.exe
erzeugt dieses Muster für eine proto2
Nachricht Feld vom Typ long
:protobuf-net: Wie wird DateTime in C# dargestellt?
private long _Count = default(long);
[global::ProtoBuf.ProtoMember(1, IsRequired = false, [email protected]"Count", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
[global::System.ComponentModel.DefaultValue(default(long))]
public long Count
{
get { return _Count; }
set { _Count = value; }
}
aber als proto2
enthält keinen Datum Zeittyp (und protobuf-net
nicht proto3
unterstützt die google.protobuf.Timestamp
enthält) nicht klar ist, wie zu vertreten DateTime
im manuell codierten C# Proto-Objekt.
Dies ist wahrscheinlich falsch:
private DateTime _When = DateTime.MinValue;
[global::ProtoBuf.ProtoMember(1, IsRequired = false, [email protected]"When", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(DateTime.MinValue)]
public DateTime When
{
get { return _When; }
set { _When = value; }
}
Was ist der richtige Weg DateTime
Eigenschaften für die Verwendung mit protobuf-net
zu dekorieren ist?
Danke Marc. Ja, ich benötige öffentliche Eigenschaft vom Typ DateTime, daher wird Option 2 oder 3 empfohlen. Aber ich verstehe Option 3 nicht, weil Proto2 DateTime nicht unterstützt - wie wird die DateTime auf dem Draht dargestellt? – BaltoStar
@Balto siehe Bcl.Proto. im Prinzip macht Protobuf-net etwas aus. Wenn du xplat brauchst: benutze den langen Trick (# 2), IMO –
Ich nehme an, 'DateTime' ist der Standardwert' ["1/1/0001 12:00:00 AM"] '=' DateTime.MinValue'. Aber was ist mit 'DateTime DataFormat'? – BaltoStar