/// <summary> /// 根據描述獲取枚舉值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="description"></param> /// <returns></returns> public static T GetEnumByDescription<T>(string description) where T : Enum { System.Reflection.FieldInfo[] fields = typeof(T).GetFields(); foreach (System.Reflection.FieldInfo field in fields) { object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //獲取描述屬性 if (objs.Length > 0 && (objs[0] as DescriptionAttribute).Description == description) { return (T)field.GetValue(null); } } throw new ArgumentException(string.Format("{0} 未能找到對應的枚舉.", description), "Description"); }
根據描述獲取枚舉
/// <summary>
/// 根據枚舉值,獲取描述
/// </summary>
/// <param name="enumValue"></param>
/// <returns></returns>
public static string GetEnumDes(Enum enumValue)
{
string value = enumValue.ToString();
FieldInfo field = enumValue.GetType().GetField(value);
object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //獲取描述屬性
if (objs == null || objs.Length == 0) //當描述屬性沒有時,直接返回名稱
return value;
DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
return descriptionAttribute.Description;
}
根據枚舉返回描述
namespace zxx { /// <summary> /// 訂單類型 /// </summary> public enum OrderType { /// <summary> /// 訂金 /// </summary> [Description("訂金")] Pre, /// <summary> /// 學費 /// </summary> [Description("學費")] TutionFee, /// <summary> /// 課程費差價 /// </summary> [Description("課程費差價")] CourseFee, /// <summary> /// 附加服務 /// </summary> [Description("附加服務")] Addtional, /// <summary> /// 成績單 /// </summary> [Description("成績單")] Transcript, } }
