需求:
目前我有一個類型為int的變數value,值為1(如圖一);有一個列舉TestEnum(如圖二),那麼該如何利用這麼變數value取的Enum的Description = "測試B"呢?
圖一
圖二
實作:
(一)寫一個"依照Int 值 取得Enum的描述"的擴充方法:
引用:
using System.ComponentModel.DataAnnotations;
/// <summary>
/// 依照Int 值 取得Enum的描述
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="obj">列舉物件</param>
/// <returns></returns>
public static string GetEnumDescriptionByInt<T>(this object obj)
{
int value;
if (obj == null)
{
return string.Empty;
}
if (!int.TryParse(obj.ToString(), out value))
{
value = 0;
}
var e = Enum.Parse(typeof(T), Convert.ToString(value));
var enumType = ((Enum)e);
var objName = enumType.ToString();
var t = enumType.GetType();
var fi = t.GetField(objName);
var arrayDescription = (DisplayAttribute[])fi.GetCustomAttributes(typeof(DisplayAttribute), false);
return arrayDescription == null ? string.Empty : arrayDescription[0].Description;
}
(二)使用GetEnumDescriptionByInt<T>()取得Enum描述:
static void Main(string[] args)
{
int value = 1;
Console.WriteLine(value.GetEnumDescriptionByInt<TestEnum>());
}
結果:
留言
張貼留言