int value = 1;
string description = Enumerations.GetEnumDescription((MyEnum)value);
Базовым типом данных по умолчанию для перечисления
в C # является int
, вы можете просто привести его.
Неограниченная мелодия библиотека больше не поддерживается; Поддержка была прекращена в пользу Enums.NET .
В Enums.NET вы должны использовать:
string description = ((MyEnum)value).AsString(EnumFormat.Description);
Я реализовал это обычным, безопасным для типов способом в Unconstrained Melody - вы должны использовать:
string description = Enums.GetDescription((MyEnum)value);
This :
, я понимаю, что основной ответ был просто приведением от int
к MyEnum
, но если вы выполняете много работы с перечислением, стоит подумать об использовании Unconstrained Melody :)
Вы не можете легко сделать это обычным способом: вы можете преобразовать только целое число в определенный тип перечисления. Как показал Николас, это тривиальное приведение, если вас интересует только один вид перечисления, но если вы хотите написать общий метод, который может обрабатывать различные виды перечислений, все становится немного сложнее. Вам нужен метод типа:
public static string GetEnumDescription<TEnum>(int value)
{
return GetEnumDescription((Enum)((TEnum)value)); // error!
}
, но это приводит к ошибке компилятора, что «int не может быть преобразовано в TEnum» (и если вы обойдете это, то «TEnum не может быть преобразован в Enum») . Итак, вам нужно обмануть компилятор, вставив приведение типов в объект:
public static string GetEnumDescription<TEnum>(int value)
{
return GetEnumDescription((Enum)(object)((TEnum)(object)value)); // ugly, but works
}
Теперь вы можете вызвать это, чтобы получить описание для любого типа перечисления под рукой:
GetEnumDescription<MyEnum>(1);
GetEnumDescription<YourEnum>(2);