我作爲一個IEnumerable<T>
的Enum
個列表,我需要循環,在每個項目並獲取其描述是這樣的:轉換通用牛逼到System.Enum
IEnumerable<T> values = (T[])Enum.GetValues(typeof(T));
foreach (Enum value in values)
{
String mylist = Common.MyExtensions.getEnumDescription(value);
}
...
public static string getEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
{
return attributes[0].Description;
}
else
return value.ToString();
}
這在部分的foreach將產生錯誤
不能 「T」 轉換爲System.Enum。
是不是IEnumerable
排在第一位的是System.Enum
? 什麼樣的演員可以做到這一點?
爲什麼不使用'T'? – 2014-11-24 09:06:40
不應該使用T嗎? – 2014-11-24 09:07:03
也許嘗試沒有鑄造。像這樣:var values = Enum.GetValues(typeof(T)); – 2014-11-24 09:07:50