C# protobuf net(反)Serialized with LengthPrefix的原始proto表示

C# protobuf net(反)Serialized with LengthPrefix的原始proto表示,c#,protocol-buffers,protobuf-net,C#,Protocol Buffers,Protobuf Net,首先,这不是一个重复的其他问题,所以请仔细阅读我的问题,然后再标记它 我需要写出与使用Serializer.NonGeneric(反)Serialize读写的C#(反)序列化消息匹配的原始原始原始文件。我目前使用PrefixStyle.Base128,并希望继续这样做(除非使用PrefixStyle.Fixed32是唯一的出路) 例如,给定一条消息: message KeyValuePair { optional string Key = 1; optional string Val

首先,这不是一个重复的其他问题,所以请仔细阅读我的问题,然后再标记它

我需要写出与使用Serializer.NonGeneric(反)Serialize读写的C#(反)序列化消息匹配的原始原始原始文件。我目前使用PrefixStyle.Base128,并希望继续这样做(除非使用PrefixStyle.Fixed32是唯一的出路)

例如,给定一条消息:

message KeyValuePair {
   optional string Key = 1;
   optional string Value = 2 [default = ""];
}
根据Google groups thread,@marc gravell说,“…SerializeWithLengthPrefix方法,默认情况下,旨在以一种有效protobuf流的方式表示数据-特别是,它只是父对象或列表的一个成员…”

当使用

Serializer.NonGeneric.SerializeWithLengthPrefix(<stream>, new KeyValuePair { Name = "foo", Value = "Bar" }, PrefixStyle.Base128, <unique_message_id>)
Serializer.NonGeneric.SerializeWithLengthPrefix(,新的KeyValuePair{Name=“foo”,Value=“Bar”},PrefixStyle.Base128,)
?

提前感谢您的帮助

消息dummydesnotexist{
message DummyDoesNotExist {
    optional KeyValuePair Value = <unique_message_id>;
}
可选的KeyValuePair值=; }
在电线上,这是:

varint: [wire-type: length-prefixed, field: <unique_message_id>] // typically 1 byte
varint: [length] // typically 1 or 2 bytes
[length bytes of KeyValuePair data]
varint:[导线类型:长度前缀,字段:://通常为1字节
变量:[长度]//通常为1或2个字节
[KeyValuePair数据的长度字节]
消息DummyDoesNotExist{
可选的KeyValuePair值=;
}
在电线上,这是:

varint: [wire-type: length-prefixed, field: <unique_message_id>] // typically 1 byte
varint: [length] // typically 1 or 2 bytes
[length bytes of KeyValuePair data]
varint:[导线类型:长度前缀,字段:://通常为1字节
变量:[长度]//通常为1或2个字节
[KeyValuePair数据的长度字节]
完美。这正是我需要的。谢谢完美的这正是我需要的。谢谢