Protobuf,从协议插件获取自定义扩展值

Protobuf, getting custom extension values from protoc plugin

我正在尝试创建一个自定义扩展,我可以在我正在编写的自定义 protoc 编译器中使用它。

我正在尝试编译这个原型文件:

syntax = "proto3";

import "google/protobuf/descriptor.proto";

extend google.protobuf.MessageOptions {
    string my_option = 5123456;
}

message TestMessageRequest {
    option (my_option) = "Hello world!";
    uint64 value1 = 2;
    string value2 = 3;
}

我的 protoc 插件得到的 CodeGeneratorRequest 似乎在任何地方都没有这个选项。这是整个请求:Google Drive Link.

我在哪里可以获得 TestMessageRequest 消息的值 "Hello world!"

选项在 TestMessageRequest 的描述符中:

"ProtoFile": [
{
  "Name": "google/protobuf/descriptor.proto",
  ....
  "HasOptions": true,
}

但是因为它是一个扩展字段,所以它不会被转换成 JSON。

您应该能够像在您使用的任何 protobuf 库中访问扩展字段一样访问它。这里有几种语言的示例: