How do I store a HashSet<EnumType> with protobuf?

Regarding the proto2 implementation, if I defined my enum as 1, 2, 4 etc, 
and I set the enum to value 3 (combination of 1 & 2), it serialize the 
fields correctly. But when deserialize, I get value 0 back (as 3 is not in 
enum).

On Tuesday, November 24, 2015 at 5:10:30 AM UTC-8, Jon Skeet wrote:

> I wasn't anticipating doing so, no. Aside from anything else, it would be 
> different from all the other platforms - you'd only end up with a useful 
> enum in C# if the developer creating the proto did exactly the right 
> thing... and that would look odd for other developers.
>
> I would suggest just using a HashSet<YourEnumType> instead for a set - 
> just like there's EnumSet in Java which is a set of values.
>
> (I'm not sure what you mean by "current implementation is forbidden values 
> that are combinations" - you can certainly define enums with values of 1, 
> 2, 3, 4, 5 etc in proto2).
>
> Jon
>
>
> On Tuesday, 24 November 2015 00:52:53 UTC, Teddy Zhang wrote:
>>
>> C# supports Enum Flags, which is a nice feature.
>>
>>    [Flags] 
>>>    enum MyColor
>>>    {
>>>       None = 0,
>>>       Black = 1,
>>>       Red = 2,
>>>       Green = 4,
>>>       Blue = 8
>>>    };
>>
>>
>> However, protobuf seems doesn't support it. There is no way to define a 
>> Flags for an enum.
>> Also, for protobuf2, it seem current implementation is forbidden values 
>> that are combinations (e.g. 3). In that case it will treat it like unknown 
>> fields.
>> In current protobuf 3 c# implemention, the restriction seems gets 
>> removed. However, there is still no way to define the enum as Flags.
>>
>> In Java we also have EnumSet to give similar functionality.
>>
>> Will Protobuf C# implementation support this in the future?
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to