【问题标题】:Dynamically create a new protobuf message动态创建新的 protobuf 消息
【发布时间】:2014-12-28 05:13:55
【问题描述】:

假设我有一个消息A,我想动态创建一个新的消息B,它应该包含A中的所有字段和一个字段(A中不包含),如何在protobuf中做到这一点?

【问题讨论】:

  • 查看邮件扩展。 protobuf 中没有继承机制。

标签: c++ dynamic protocol-buffers


【解决方案1】:

首先,查看descriptor.h 中定义的类型。这些“描述符”描述了 Protobuf 类型。您可以通过创建FileDescriptorProto(基本上是.proto 文件的AST;参见descriptor.proto)然后使用DescriptorPool 将其“编译”成FileDescriptor 来动态创建一个。这反过来将包含一个Descriptor,用于文件中定义的每种类型。

一旦为动态生成的类型设置了Descriptor,就可以使用DynamicMessage 动态构造该类型的消息对象。您可以使用Reflection接口动态访问此消息的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多