Protocol buffers Protobuf重复消息选项

Protocol buffers Protobuf重复消息选项,protocol-buffers,Protocol Buffers,我试图通过扩展google.protobuf.MessageOptions将一些文档元信息附加到protobuf消息中。“我的元信息”选项之一可能会出现多次。看起来我可以声明重复选项,但如何在消息上使用它 以下是我试图实现的一个示例: extend google.protobuf.MessageOptions { optional string description = 51234; repeated string usages = 51235; } message MyMs

我试图通过扩展google.protobuf.MessageOptions将一些文档元信息附加到protobuf消息中。“我的元信息”选项之一可能会出现多次。看起来我可以声明重复选项,但如何在消息上使用它

以下是我试图实现的一个示例:

extend google.protobuf.MessageOptions {
    optional string description = 51234;
    repeated string usages = 51235;
}

message MyMsg {
    option (description) = "MyMsg description";
    option (usages) = ???

    optional bool myFlag = 1;
    optional string myStr = 2;
}

我应该用什么来代替???如果我想记录两种不同的使用方式?

如果我回忆正确,您可以多次指定重复选项:

message MyMsg {
  option (description) = "MyMsg description";
  option (usages) = "usage1";
  option (usages) = "usage2";

  optional bool myFlag = 1;
  optional string myStr = 2;
}
编辑:访问重复字段的方法没有文档记录,需要花费一些时间来查看标题,因此我决定将其添加到此答案中:

auto opts = MyMsg::descriptor()->options();
std::cout << opts.GetExtension(description) << std::endl;
for (int i = 0; i < opts.ExtensionSize(usages); ++i)
    std::cout << opts.GetExtension(usages, i) << std::endl;
auto opts=MyMsg::descriptor()->options();

std::不能重复选项吗?如何设置?对不起,我指的是“重复组合选项”。@GillBates啊。。。实际上我不确定这些是否可以表达,但我已经很久没有写过这些代码了。也许可以用文本格式(在{}大括号中)编写它们。@GillBates根据文档,其语法是:消息栏{optional int32 a=1[(foo_选项)。opt1=123,(foo_选项)。opt2=“baz”;//可选聚合语法(使用文本格式):可选int32 b=2[(foo_选项)={opt1:123 opt2:“baz”}@丹巴,哇,替代的语法确实有效!它在哪里被描述?我在文档中的任何地方都找不到它。