While using ProtoBuf-Net and serializing an enum property, where the enum is set to [FlagsAttribute], I received the following error message when serializing an enum value c
Update : this is now fixed in r274; you would use:
[ProtoMember(12, DataFormat = DataFormat.TwosComplement)]
public MyEnum MyValue {get;set;}
Ultimately the protocol buffers wire format doesn't provide any scope for [Flags] enums - it enforces enum values against the discreet set. I could allow this easily enugh, but:
An easier way of doing this may be to do a shim in your code:
public MyEnum MyValue {get;set;}
[ProtoMember(12)]
private int MyValueWire {
get {return (int)MyValue;}
set {MyValue = (MyEnum)value;}
}
The other alternative would be to add a flag that works like the above on your behalf; treating it as an int rather than an enum.