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 库中访问扩展字段一样访问它。这里有几种语言的示例:
我正在尝试创建一个自定义扩展,我可以在我正在编写的自定义 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 库中访问扩展字段一样访问它。这里有几种语言的示例: