Я использую protobuf и синтаксис proto 3
для определения сообщений.
Я хочу иметь возможность проводить различие между полями, когда их значения не были предоставлены (не указаны) и когда их значения были установлены /осталось их значения по умолчанию (0
для int32, []
для повторного и т. д.).Для значений есть хорошо известная оболочка, которая позволяет это делать, но для пользовательских сообщений - свои.
Некоторые люди придумали технику, основанную на одной из них, но она не работает с коллекциями (повторяющимися или отображениями).).
Теперь я начинаю рассматривать просто систематическое написание оболочек для каждого сообщения.
message MyMessage {
int32 id = 1;
string name = 2;
// ...
message Optional {
MyMessage value = 1;
}
message OptionalRepeated {
repeated MyMessage values = 1;
}
}
Даже если MyMessage.OptionalRepeated
или MyMessage.Optional
никогда не будет использоваться.
Я полагаю, что люди должны полагаться на такой шаблон, поэтому, возможно, уже есть инструмент, который может автоматически генерировать этот шаблонный код.Знаете ли вы инструмент, чтобы уменьшить это бремя?Или еще лучше, есть ли лучший подход?