在protobuf中导入和使用不同的包文件?

Mut*_*nam 13 import package protocol-buffers proto

我已经导入了另一个原型,它的包装名称与我的不同.对于来自其他包的消息的使用,已使用包名访问该消息.

例如 :

other.proto

package muthu.other;

message Other{
   required float val = 1;
}
Run Code Online (Sandbox Code Playgroud)

myproto.proto

package muthu.test;

import "other.proto";

message MyProto{
  required string str = 1;
  optional muthu.other.Other.val = 2;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法直接使用muthu.other包的val,如可选的val = 2; 而不是使用muthu.other.Other.val

找不到有关此问题的任何帮助文档.帮帮我.

小智 11

如果包名称相同,那么您可以从字段声明中省略包名称,否则没有其他方法.如果你可以通过指定"package muthu.other"在同一个包中包含muthu.test,那么它是允许的.

来自Google protobuf的文档:

您可以将可选的包说明符添加到.proto文件,以防止协议消息类型之间的名称冲突.

package foo.bar;
message Open { ... }
Run Code Online (Sandbox Code Playgroud)

然后,您可以在定义消息类型的字段时使用包说明符:

message Foo {
  ...
  required foo.bar.Open open = 1;
  ...
}
Run Code Online (Sandbox Code Playgroud)