首页 > 解决方案 > protobuf-net 什么时候需要使用 ProtoEnum 属性?

问题描述

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

在正常的使用场景中,枚举成员序列化似乎工作得很好(只要枚举本身有一个[ProtoContract]装饰它)。

标签: c#enumsprotobuf-net

解决方案


您唯一需要的时间是:

  1. 当您使用 .proto => C# 或 C# => .proto 时,并且您希望 .proto 中的名称与实际enum声明不同
  2. 当您出于某种原因想要将线路上的数字映射到类型模型enum中的数字时,即线路上的值12(对于相同数据的其他用户)将以20某种方式对您的应用程序更有用

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


推荐阅读