Если мы рассмотрим:
[ProtoContract]
public class Foo {
[ProtoMember(12)]
public List<DateTime> Times { get; } = new List<DateTime>();
}
, то GetProto<T>()
в v2.3.2 (версия, упомянутая в вопросе) и v2.4.4 (текущая версия по умолчанию) сгенерирует:
syntax = "proto2";
import "protobuf-net/bcl.proto"; // schema for protobuf-net's handling of core .NET types
message Foo {
repeated .bcl.DateTime Times = 12;
}
Итак, на поверхности , это уже должно быть просто отлично. Если вы делаете что-то более экзотическое c (возможно, пользуетесь списком в значении словаря?), Я был бы рад помочь, но мне понадобится больше информации о том, что вы делаете. Публикация некоторого C#, который показывает, что вы видите, будет отличным началом.
Обратите внимание, что когда впервые появился protobuf- net, не было согласованного формата передачи для даты. / значения, подобные времени, поэтому protobuf- net что-то придумал, но получается, что , а не будет удобной для кроссплатформенной работы; следующее - серьезное изменение (оно не совместимо с данными), но, если возможно, я настоятельно рекомендую известный формат, добавленный Google позже:
[ProtoContract]
public class Foo {
[ProtoMember(12, DataFormat = DataFormat.WellKnown)]
public List<DateTime> Times { get; } = new List<DateTime>();
}
, который генерирует :
syntax = "proto2";
import "google/protobuf/timestamp.proto";
message Foo {
repeated .google.protobuf.Timestamp Times = 12;
}