我正在尝试创建一个自定义扩展名,该扩展名可以在我正在编写的自定义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;
}
我的CodeGeneratorRequest
插件获得的protoc
似乎在任何地方都没有此选项。这是整个请求:Google Drive Link。
"Hello world!"
消息在哪里可以得到值TestMessageRequest
?
答案 0 :(得分:1)
该选项位于TestMessageRequest
的描述符中:
"ProtoFile": [
{
"Name": "google/protobuf/descriptor.proto",
....
"HasOptions": true,
}
但是因为它是一个扩展字段,所以不会转换为JSON。
您应该能够以与使用任何protobuf库一样访问扩展字段的方式来访问它。这里有几种语言的示例:Python Protocol Buffer field options