Согласно Проблема 262: ProtoMembers с IsRequired = true на самом деле не требуются :
В настоящее время IsRequired в основном влияет на сериализацию , заставляя игнорировать некоторые правила по умолчанию.
Когда IsRequired имеет значение false (по умолчанию), значения по умолчанию не сериализуются, например, целочисленное значение 0 не будет сериализовано, значение 1will.
Когда IsRequired имеет значение true, все значения, включая значения по умолчанию, сериализуются.
Десериализация с использованием protobuf-net в настоящее время, похоже, не зависит от значения IsRequiredприписывать.Однако, если вы используете для десериализации другую реализацию Google Protocol Buffers , вы можете увидеть другое поведение.
Если добавить новое свойство в существующий класс и десериализовать сериализованный файл, написанный ранеесвойство было добавлено, новое свойство просто не будет установлено.