C# protobuf网中枚举的二进制表示

C# protobuf网中枚举的二进制表示,c#,wcf,serialization,enums,protobuf-net,C#,Wcf,Serialization,Enums,Protobuf Net,目前,我们正在使用带有NetTcpBinding的WCF服务。我们确实有数据对象,它们的属性是enum。我们已经了解到,这些值是以字符串表示形式序列化的,请检查此处: 我们确实希望避免这种情况,因为这只是通信开销 因为我们很快就要将序列化转换为protobuf-net-on-the-wire,所以我要问自己,定义一个额外的整数属性是否值得花费时间。我们有几个枚举,例如 [Flags] public enum Permission { None = 0, Read = 1,

目前,我们正在使用带有NetTcpBinding的WCF服务。我们确实有数据对象,它们的属性是enum。我们已经了解到,这些值是以字符串表示形式序列化的,请检查此处:

我们确实希望避免这种情况,因为这只是通信开销

因为我们很快就要将序列化转换为protobuf-net-on-the-wire,所以我要问自己,定义一个额外的整数属性是否值得花费时间。我们有几个枚举,例如

[Flags]
public enum Permission
{
    None = 0,
    Read = 1,
    Write = 2
}
protobuf网络中标志枚举的二进制表示是如何在线路上实现的

它如何处理未定义的枚举值(例如读写)

我在这里也找到了Marc Gravell的一些相关答案,但可能已经过时(2009年):

标记为
[Flags]
的枚举将作为一个正整数发送,以避免未正式定义标记组合的问题(protobuf规范描述了枚举,但未定义位组合)。读|写是整数3,它被可变编码为单个字节,并按原样发送。这里详细介绍了varint编码的细节:

非常清楚!那么我想你2009年的答案已经过时了?