Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create enum using reflection

Does C# offer a way to create Enum type from scratch using reflection?

Suppose, I have a collection of strings: {"Single", "Married", "Divorced"} and I'm willing to build the following enum type in runtime:

enum PersonStatus
{
    Single, Married, Divorced
}

Is this somehow possible?

like image 679
Yippie-Ki-Yay Avatar asked Dec 04 '22 18:12

Yippie-Ki-Yay


1 Answers

Not without doing really gnarly things like generating assemblies using Emit. How would you use such an enum anyway? Whats the real goal here?

EDIT: Now that we know what you really want to do, this page suggests that you can acheive your goal using code like the following:

private void listViewComplex_CellEditStarting(object sender, CellEditEventArgs e)
{
    // Ignore edit events for other columns
    if (e.Column != this.columnThatYouWantToEdit)
        return;

    ComboBox cb = new ComboBox();
    cb.Bounds = e.CellBounds;
    cb.Font = ((ObjectListView)sender).Font;
    cb.DropDownStyle = ComboBoxStyle.DropDownList;
    cb.Items.AddRange(new String[] { "Single", "Married", "Divorced" });
    cb.SelectedIndex = 0; // should select the entry that reflects the current value
    e.Control = cb;
}
like image 119
Chris Shain Avatar answered Dec 20 '22 22:12

Chris Shain