как заменить расширение proto2 на proto3 любое, когда расширить различное количество полей? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь выучить 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 в базе сообщений ... о, это будет слишком ужасно 101

1 Ответ

0 голосов
/ 28 мая 2019

Вы обычно структурируете это так:

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 внутри любого поля.

...