首先,这不是this其他问题的重复,所以请在标记之前完整阅读我的问题。
我需要写出与使用Serializer.NonGeneric读取和写入的C#(de)序列化消息匹配的原始proto文件。(De)Serialize。我目前使用PrefixStyle.Base128并希望继续这样做(除非使用PrefixStyle.Fixed32是前进的唯一方法)。
例如,给出一条消息:
message KeyValuePair {
optional string Key = 1;
optional string Value = 2 [default = ""];
}
根据this Google网上论坛帖子,@ marc-gravell说" ... SerializeWithLengthPrefix方法,默认情况下,旨在以一种有效的protobuf流的方式表示数据 - 在特别是,好像它只是父对象或列表的成员...... "
" 父对象或列表"在使用
序列化时,在原始proto定义中看起来像Serializer.NonGeneric.SerializeWithLengthPrefix(<stream>, new KeyValuePair { Name = "foo", Value = "Bar" }, PrefixStyle.Base128, <unique_message_id>)
提前感谢您的帮助!
答案 0 :(得分:0)
message DummyDoesNotExist {
optional KeyValuePair Value = <unique_message_id>;
}
在电线上,这是:
varint: [wire-type: length-prefixed, field: <unique_message_id>] // typically 1 byte
varint: [length] // typically 1 or 2 bytes
[length bytes of KeyValuePair data]