2016-07-15 10 views
4

Я импортировал другой прото, который имеет другое имя пакета, чем мое. Для использования сообщений из другого пакета вы получили доступ к этому сообщению с именем пакета.Импорт и использование различных файлов пакетов в 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 пакета прямо как опционально val = 2; вместо muthu.other.Other.val?

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

+0

Что вы ожидаете это сделать? 'val' - поле« Другое ». Что значит «использовать» это поле в другом типе? –

+0

@ KentonVarda Я имел в виду, есть ли способ импортировать пакет напрямую, а не файл proto? поэтому я могу использовать val вместо предшествующего ему имени пакета. – Muthu

+0

Опять же, на что вы пытаетесь использовать 'val'? Код, который вы дали, не имеет никакого смысла. 'val' - это поле - что значит ссылаться на это поле внутри другого определения типа? –

ответ

2

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

от Google документации Protobuf:

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

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

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

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