c# - protobuf-net 什么时候需要使用 ProtoEnum 属性?
问题描述
protobuf-net包含一个[ProtoEnum]
可用于装饰枚举成员的属性。何时以及如何使用它?
在正常的使用场景中,枚举成员序列化似乎工作得很好(只要枚举本身有一个[ProtoContract]
装饰它)。
解决方案
您唯一需要的时间是:
- 当您使用 .proto => C# 或 C# => .proto 时,并且您希望 .proto 中的名称与实际
enum
声明不同 - 当您出于某种原因想要将线路上的数字映射到类型模型
enum
中的数字时,即线路上的值12
(对于相同数据的其他用户)将以20
某种方式对您的应用程序更有用
我通常强烈反对第二种选择;它使事情变得过于复杂,这意味着它需要在两个方向上应用额外的逻辑。现在尤其如此,“proto3”改变了无法识别值的预期行为;在“proto2”中,这意味着一个错误,但在“proto3”中,你只需要获取值。如果您正在应用地图,则无法执行此操作。
推荐阅读
- ios - 具有来自对象数组的字符串属性的 NSSet
- c - 是否有替代 C 中数组的范围初始化的替代方法?
- typescript - TypeScript 错误的 promise 使用回调函数的返回值解析了推断类型
- mysql - Laravel distinct/groupBy 和分页
- distributed-system - 为什么要将应用服务器拆分为读写服务器?
- javascript - 如何同步播放多个 GIF?(反应)
- android - Android 什么时候会在不破坏整个进程的情况下破坏活动?
- web - 如何从无法访问 Window 对象的服务工作者脚本刷新页面
- cplex - CPLEX/OPL 预分配决策变量
- ruby - Ruby on Rails