Когда необходимо использовать атрибут ProtoEnum для protobuf-net? - PullRequest
1 голос
/ 17 июня 2019

protobuf-net включает атрибут [ProtoEnum], который можно использовать для оформления элементов перечисления. Когда и как это следует использовать?

В нормальных сценариях использования сериализация членов enum, кажется, работает очень хорошо (до тех пор, пока у самого enum есть [ProtoContract], его украшающий).

1 Ответ

1 голос
/ 17 июня 2019

Единственный раз, когда вам это нужно:

  1. когда вы работаете .proto => C # или C # => .proto и хотите, чтобы имя в .proto отличалось от фактического enum объявления
  2. когда вы хотите сопоставить числа в проводе с числами в вашей модели типа по какой-то причине, то есть значение enum, равное 12 в проводе ( другим пользователям с теми же данными) было бы более полезно 20 для вашего приложения как-то

Я обычно настоятельно не рекомендую второй вариант; это делает вещи слишком сложными, и , это означает, что нужно применить дополнительный бит логики в обоих направлениях. Это особенно верно сейчас, когда «proto3» изменил ожидаемое поведение непризнанных значений; в «proto2» это означало ошибку, но в «proto3» вы должны просто принять значение. Вы не можете сделать это, если применяете карту.

...