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

3
protobuf-net包含一个[ProtoEnum]属性,可用于装饰枚举的成员。何时以及如何使用它?在正常使用场景中,枚举成员序列化似乎运作良好(只要枚举本身有[ProtoContract]装饰)。
1个回答

3
您只有以下两种情况需要使用这个功能:
1. 当您在 .proto => C# 或者 C# => .proto 的转换中需要将 .proto 中的名称与实际的 enum 声明不同。
2. 当您希望在某些情况下将 "on the wire" 的数字映射到您的类型模型中的数字,比如,对于其他使用同一数据的用户来说,在 "on the wire" 上值为 12enum 值在您的应用程序中更有用的是 20
通常我强烈不建议使用第二个选项,因为它会使事情变得过于复杂并且需要在两个方向上应用额外的逻辑。特别是现在 "proto3" 改变了未识别值的预期行为;在 "proto2" 中,这意味着出错,但在 "proto3" 中,您只需接受该值。如果采用了映射,则无法执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接