【发布时间】:2014-12-28 05:13:55
【问题描述】:
假设我有一个消息A,我想动态创建一个新的消息B,它应该包含A中的所有字段和一个字段(A中不包含),如何在protobuf中做到这一点?
【问题讨论】:
-
查看邮件扩展。 protobuf 中没有继承机制。
标签: c++ dynamic protocol-buffers
假设我有一个消息A,我想动态创建一个新的消息B,它应该包含A中的所有字段和一个字段(A中不包含),如何在protobuf中做到这一点?
【问题讨论】:
标签: c++ dynamic protocol-buffers
首先,查看descriptor.h 中定义的类型。这些“描述符”描述了 Protobuf 类型。您可以通过创建FileDescriptorProto(基本上是.proto 文件的AST;参见descriptor.proto)然后使用DescriptorPool 将其“编译”成FileDescriptor 来动态创建一个。这反过来将包含一个Descriptor,用于文件中定义的每种类型。
一旦为动态生成的类型设置了Descriptor,就可以使用DynamicMessage 动态构造该类型的消息对象。您可以使用Reflection接口动态访问此消息的字段。
【讨论】: