web-dev-qa-db-ja.com

protobufの異なるパッケージファイルのインポートと使用

私とは異なるパッケージ名を持つ他のプロトをインポートしました。他のパッケージからのメッセージを使用するには、パッケージ名を使用してそのメッセージにアクセスしてください。

例えば ​​:

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のようにmuthu.otherパッケージを直接使用する方法はありますかoptional val = 2;の代わりにmuthu.other .Other.val

これに関するヘルプドキュメントが見つかりませんでした。手伝ってください。

12
Muthurathinam

パッケージ名が同じ場合、フィールド宣言からパッケージ名を省略できますが、それ以外の方法はありません。 「package muthu.other」を指定してmuthu.testを同じパッケージに含めることができる場合、許可されます。

ProtobufのGoogleドキュメントから:

プロトコルメッセージタイプ間の名前の衝突を防ぐために、オプションのパッケージ指定子を.protoファイルに追加できます。

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

その後、メッセージタイプのフィールドを定義するときにパッケージ指定子を使用できます。

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