Разные вещи здесь:
1) ответ Райана выглядит хорошо, но ... я бы предпочел передать Enum интерпретатору enum, чтобы вы могли сделать весь Convert.To ... там. Если вы знаете, что используете ТОЛЬКО целочисленные перечисления, то Convert.ToInt32 () подойдет. В противном случае вы можете захотеть добавить с помощью отражения или попробовать / поймать другие преобразования.
2) Вы также можете рассмотреть возможность использования членов класса Enum, таких как .GetName (), .GetValue () и т. Д., Поскольку они имеют дело непосредственно с определенными именами и значениями, независимыми от типа enum.
3) технически я бы не выбросил исключение за пределы интерпретатора enum. Если это условие в общем случае верно, выведите исключение изнутри интерпретатора enum, чтобы все виды использования класса получили пользу от проверки. Или вы можете в конечном итоге дублировать код.
4) Судя по названию вашей переменной, у вас есть опыт работы с C ++ / MFC. Возможно, вы захотите войти в соглашения об именах в стиле C #, это облегчит вашу жизнь при использовании / чтении кода и библиотек других людей. Проверьте MS StyleCop для хорошего дополнения, чтобы помочь с именами.