在google protobuf v3中,有Any类型允许您序列化标识邮件的名称/网址(https://developers.google.com/protocol-buffers/docs/proto3#any,https://github.com/google/protobuf/blob/master/src/google/protobuf/any.proto)。
是否有可能描述这个构造并让protobuf-net序列化/反序列化它?我需要它遵循protobuf v3标准,因此DynamicType / bcl.NetObjectProxy是关闭的,但不是二进制兼容的。
如果没有,使用protobuf-net使用Any构造序列化对象的最佳方法是什么?我真的不想切换到protobuf-csharp版本。
答案 0 :(得分:0)
最终,Any
可以被视为:
[ProtoContract]
public sealed class Any {
[ProtoMember(1)] public string type_url {get;set;}
[ProtoMember(2)] public byte[] value {get;set;}
}
从那里,您可以在网址上执行switch
(或字典查找),将值加载到MemoryStream
,然后回调到protobuf-net。对于序列化,类型url可能存储在针对类型的属性中,但这是更棘手的雾反序列化。也许是字符串到字体的字典和非通用的API。