In addition to Solution 2:
Please see my comment to the question. The attribute
System.FlagsAttribute
affects only one thing: string representation of enumeration values, and, hence, all cases when such representation is used, such as debuggers. If does not affect any other functionality. Reflection examines your enumeration members' name and generates bit-combined names. If you are curious to know how such things work, you can read my article
Enumeration Types do not Enumerate! Working around .NET and Language Limitations[
^].
—SA