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

时间:2016-07-15 07:27:12

标签: import package protocol-buffers proto

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

例如:

other.proto

package muthu.other;

message Other{
   required float val = 1;
}

myproto.proto

package muthu.test;

import "other.proto";

message MyProto{
  required string str = 1;
  optional muthu.other.Other.val = 2;
}

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

无法找到有关此问题的任何帮助文档。帮助我。

1 个答案:

答案 0 :(得分:6)

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

来自Google protobuf的文档:

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

package foo.bar;
message Open { ... }

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

message Foo {
  ...
  required foo.bar.Open open = 1;
  ...
}