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

Import 在protobuf中导入和使用不同的包文件?,import,package,protocol-buffers,proto,Import,Package,Protocol Buffers,Proto,我已经导入了另一个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.Ot

我已经导入了另一个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的val。其他包直接像可选val=2而不是使用muthu.other.other.val


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

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

来自protobuf的Google文档:

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

package foo.bar;
message Open { ... }
然后,在定义消息类型的字段时,可以使用包说明符:

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

你希望这能做什么
val
Other
的一个字段。在另一种类型中“使用”这个字段意味着什么?@KentonVarda我的意思是,有没有办法直接导入包而不是原始文件?所以我可以使用val,而不是在它前面加上包名。再说一次,你想用
val
做什么?你给出的代码没有任何意义
val
是一个字段——在另一个类型定义中引用该字段意味着什么?对不起,这段可怜的代码@KentonVarda。这就是我的意图,我需要使用一些常见的proto定义,它是在一些常见的包名(稳定的,我不能更改)中定义的,许多内部项目都使用它。我有我自己的项目,需要在一个单独的包名中定义(为了理解),它使用那个公共包。使用其他文件中定义的类型是正常的。例如,你可以说:
可选muthu.other.other foo=2
声明类型为
Other
的字段。没有办法避免包前缀,尽管因为两个文件都在
muthu
下,在这种情况下,您可以简单地编写
other.other
。因此,这意味着我可以执行
导入foo.bar;消息Foo{…required Open=1;..}