使用protobuf-net序列化标志枚举时出现溢出

时间:2016-02-17 09:03:51

标签: c# enums protobuf-net

在序列化Flags long Enum时,protobuf-net会抛出System.Overflow异常。这是我正在做的事情的示意图:

正在序列化的类:

[ProtoContract()]
public class Entry
{
   [ProtoMember(1)]
   public FancyLongEnum FancyLongEnum {get;set;}
}

Enum:

[ProtoContract(ImplicitFields = ImplicitFields.AllFields, EnumPassthru = true)]
[Flags]
public enum FancyLongEnum : long
{
    FirstFancyValue = 1,
    [...]
    LastFancyValue = 137438953472
}

结果:

System.OverflowException: Arithmetic operation resulted in an overflow.

解决方法是使用包装器long属性并在序列化期间忽略FancyLongEnum。但是,我希望有一种更清洁的方式。

Error while using ProtoBuf-Net with flags enum中讨论了类似的问题。它导致了对protobuf-net的修复。

如何在不使用包装器属性的情况下直接进行序列化工作?

0 个答案:

没有答案