Древний вопрос, но ответ 3Dave предоставил самый простой подход. Мне понадобился небольшой вспомогательный метод для генерации сценария Sql для декодирования значения enum в базе данных для отладки. Работало отлично:
public static string EnumToCheater<T>() {
var sql = "";
foreach (var enumValue in Enum.GetValues(typeof(T)))
sql += $@"when {(int) enumValue} then '{enumValue}' ";
return $@"case ?? {sql}else '??' end,";
}
У меня это в статическом методе, поэтому использование:
var cheater = MyStaticClass.EnumToCheater<MyEnum>()