Как заменить расширение proto2 на proto3 любое, когда расширить различное количество полей?
Я пытаюсь изучить Proto3, и у меня есть несколько вопросов с any
,
Я довольно часто использую расширение, если мой прото такой:
message base {
extensions 1 to 100;
}
// a.proto
extend base {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
extend base {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
тогда как заменить эти расширения на любые? я должен написать как
import google/protobuf/any.proto
message base {
any a = 1;
any b = 2;
any c = 3;
any d = 4;
}
?
может, у многих прото есть расширенный base.proto, и я не могу определить максимальное число расширений этих протос. тогда как я могу заменить эти расширения на любые?
Если мне придется написать от 1 до 100 в базе сообщений... о, это будет слишком ужасно!
1 ответ
Решение
Вы бы обычно структурировали это так:
message base {
any submsg = 1;
}
// a.proto
message submsg_a {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
message submsg_b {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
А потом ставь либо submsg_a
или же submsg_b
внутри любого поля.