Я использую метод EnumHelper
и пытаюсь получить описание и enum
значение (Id), как показано ниже:
EnumHelper:
public static class MyEnumHelper
{
public static string GetDescription<T>(this T enumerationValue)
where T : struct
{
System.Type type = enumerationValue.GetType();
if (!type.IsEnum)
{
throw new ArgumentException("Must be Enum type", "enumerationValue");
}
//for the enum
MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString());
if (memberInfo != null && memberInfo.Length > 0)
{
object[] attrs = memberInfo[0]
.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
{
return ((DescriptionAttribute)attrs[0]).Description;
}
}
return enumerationValue.ToString();
}
}
Перечисление:
public enum StatusEnum
{
[Description("Deleted")]
Deleted= 0,
[Description("Active")]
Active= 1,
[Description("Passive")]
Passive= 2
}
Объект:
public class DemoEntity
{
public int Id { get; set; }
public StatusEnum StatusId { get; set; }
[NotMapped]
public string StatusName
{
get { return MyEnumHelper.GetDescription(StatusId); }
}
}
Контроллер:
DemoEntity entity = DemoEntity();
entity.StatusId = StatusEnum.Passive;
// !!! This returns "Passive" instead of its value 2. How can I get its value?
Однако, когда я пытаюсь присвоить Id
значение enum
с помощью функции строго типа enum
, как показано выше, я все равно получаю его описание вместо Id
. Есть идеи о том, где проблема?