30

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

例如 :

其他.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;
}

有没有办法像optional val = 2;一样直接使用muthu.other包的val ?而不是使用muthu.other.Other.val

找不到任何有关此的帮助文档。帮帮我。

4

1 回答 1

20

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

来自 protobuf 的 Google 文档:

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

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

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

message Foo {
  ...
  required foo.bar.Open open = 1;
  ...
}
于 2017-03-03T20:01:19.003 回答