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