Я пытаюсь понять поддержку propobuf-net Dictionary/KeyValuePair. Мы хотели бы использовать базовый двоичный поток и сгенерированный прото-файл из java, но сгенерированный .proto-файл содержит то, что выглядит как пользовательский тип Pair_String_Int32.Как работает Protobuf-net для словаря/KeyValuePair?
Может кто-то пролить свет на это?
У меня есть класс, переведенный как это:
[DataContract]
public class ForwardCurve
{
[DataMember(Order=1, IsRequired = true)]
public string Commodity { get; set; }
[DataMember(Order = 2, IsRequired = false)]
public IDictionary<string, int> DictValue { get; set; }
[DataMember(Order = 3, IsRequired = false)]
public IList<string> ListValue { get; set; }
}
Сформированный .proto файл, используя Serializer.GetProto будет:
message ForwardCurve {
required string Commodity = 1;
repeated Pair_String_Int32 DictValue = 2;
repeated string ListValue = 3;
}
Так что Pair_String_Int32 (и что происходит в поток байтов protobuffer) и есть ли способ его сопоставления, так что protobuf, используя protoc, может создать эквивалентный код преобразования в Java?
Я получил эту работу, добавив дополнительное сообщение в сгенерированный файл .proto. Это будет фантастически, если генерация GetProto будет более полной. –