Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Enum with additional options (All, None)

Tags:

.net

enums

I have an enum, which:

  • is included in my class as a property
  • it represents some values from a database table (a couple of types)
  • it is displayed in DropBox, so that it can be used as a filter

Now I would like to add 'All' (or 'None' for example) value to this DropBox.

How should I do this:

  • add 'All' value to Enum?
  • add 'All' value to DropBox, change type of my property from Enum to String
  • some other option...
like image 434
sventevit Avatar asked Feb 09 '10 11:02

sventevit


2 Answers

Codesleuth comment on another answer made me read the question again and here is an update.

Consider the use of a flags enumeration if you are going to have multiple combination's. In your case it would mean that selecting any combination of types is a valid input.

[Flags]
enum MyTypes
{
    None = 0,
    One = 1,
    Two = 2,
    Three = 4,
    Four = 8,
    All = One | Two | Three | Four
}

If the user can only select one type or all the types then use a normal enumeration:

enum MyType
{
    None,
    One,
    Two,
    Three,
    Four,
    All
}
like image 56
João Angelo Avatar answered Nov 15 '22 09:11

João Angelo


IMHO, it's best to add an 'All' value to your enum like so:

enum SampleEnum 
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 4,
    All = Value1 | Value2 | Value3 
}

This way, you won't have to care about the displayed items in your combobox, and you can react to the selection of that value in your code, if that should be necessary...

like image 34
Thomas Weller Avatar answered Nov 15 '22 10:11

Thomas Weller