Protocol buffers 如何从protobuf描述符中获取方法选项?
我尝试用protobuf编译器解析.proto文件。但这里有一个令人困惑的问题,我无法获得方法的选项 似乎我的选项被视为“未知字段”,而不是选项 有什么办法解决这个问题吗?谢谢 (我不想在这里粘贴太多代码,但我认为有必要全面描述这个问题。对此我深表歉意。) (环境:g++4.7、Ubuntu 16.04、Protobuf 3.0.0)Protocol buffers 如何从protobuf描述符中获取方法选项?,protocol-buffers,protoc,Protocol Buffers,Protoc,我尝试用protobuf编译器解析.proto文件。但这里有一个令人困惑的问题,我无法获得方法的选项 似乎我的选项被视为“未知字段”,而不是选项 有什么办法解决这个问题吗?谢谢 (我不想在这里粘贴太多代码,但我认为有必要全面描述这个问题。对此我深表歉意。) (环境:g++4.7、Ubuntu 16.04、Protobuf 3.0.0) 选项不是未知字段,因为它们是!在proto3中,扩展应该被删除,但是当您使用导入程序动态解析.proto文件时,无论您声明的语法版本如何,扩展都会被启用 如果在
选项不是未知字段,因为它们是!在proto3中,扩展应该被删除,但是当您使用
导入程序动态解析.proto
文件时,无论您声明的语法版本如何,扩展都会被启用
如果在内部for()循环中添加一行,如下所示:
print(method_d->options().DebugString());
您将得到如下输出:
[lrpc.CmdID]: 1
您可以使用protobuf反射枚举扩展值——它们在您调用时显示
// example.proto
syntax = "proto3";
package foobar;
import "google/protobuf/wrappers.proto";
import "google/protobuf/empty.proto";
import "lrpc.proto";
message SearchRequest {
// ...
}
message SearchResponse {
// ...
}
service SearchService {
rpc Search( SearchRequest ) returns( SearchResponse ) {
option( lrpc.CmdID ) = 1;
}
}
print(method_d->options().DebugString());
[lrpc.CmdID]: 1