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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to