Я ожидаю, что парсер будет вести себя так же, как если бы он обнаружил сообщение, в котором отсутствует поле required
. Я ожидаю, что парсер отклонит сообщение.
На странице, на которую вы ссылались, написано:
Обязательно - навсегда - Вы должны быть очень осторожны при маркировке полей по мере необходимости. Если в какой-то момент вы захотите прекратить запись или отправку обязательного поля, будет проблематично изменить это поле на необязательное поле - старые читатели сочтут сообщения без этого поля неполными и могут непреднамеренно отклонить или отбросить их.
Теперь это не совсем тот сценарий, о котором вы говорите, но это означает, что пропущенное обязательное сообщение приведет к тому, что сообщение не будет принято.
Если поле типа enum не было required
, то из документации следует, что это поле будет считаться неизвестным. Если бы вы использовали версию API protobuf, которая его поддерживала, вы могли бы получить доступ к этому полю / значению, но вы бы увидели его как байты или что-то еще, а не как сопоставленный тип Java или C # enum
.