Импорт и использование различных файлов пакетов в 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;
}

Есть ли способ использовать val пакета muthu.other напрямую, как необязательный val = 2; вместо использования muthu.other.Other.val?

Не удалось найти справочный документ по этому вопросу. Помоги мне.

1 ответ

Если имя пакета одно и то же, вы можете опустить имя пакета в объявлении поля, но в противном случае другого пути нет. если вы можете включить muthu.test в тот же пакет, указав "пакет muthu.other", то это разрешено.

Из документации Google по протобуфу:

Вы можете добавить необязательный спецификатор пакета в файл.proto, чтобы предотвратить конфликт имен между типами сообщений протокола.

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

Затем вы можете использовать спецификатор пакета при определении полей вашего типа сообщения:

message Foo {
  ...
  required foo.bar.Open open = 1;
  ...
}
Другие вопросы по тегам