ProtoEnum属性何时需要用于protobuf-net?

时间:2019-06-17 18:46:23

标签: c# enums protobuf-net

protobuf-net包含一个[ProtoEnum]属性,可用于装饰枚举的成员。什么时候以及如何使用?

在正常使用情况下,枚举成员序列化似乎可以正常工作(只要枚举本身具有[ProtoContract]装饰)。

1 个答案:

答案 0 :(得分:1)

您唯一需要的时间是:

  1. 在使用.proto => C#或C#=> .proto时,您希望.proto中的名称与实际的enum声明不同
  2. 出于某种原因要将电线上的数字映射到类型模型中的数字 时,例如{{1} }}(对于具有相同数据的其他用户)更有用的是enum到您的应用

我通常强烈反对第二种选择;它使事情变得太复杂了,这意味着它需要在两个方向上都应用一些额外的逻辑。由于“ proto3”更改了无法识别的值的预期行为,因此尤其如此。在“ proto2”中,这是为了指示错误,但是在“ proto3”中,您只是要取值。如果要应用地图,则无法执行此操作。