C#语言中提供了枚举和整型之间的强制转换功能,但这仅限于没有给枚举类型中各个元素指定基础类型值的
情况, 如下:
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
其中Sat的值是0, Sun是1,以此类推, 这时如果要将整型值转换为枚举类型,可以直接作显式强类型转换即可,
int i_day = 1;
Days day = (Days) i_day; // day == Days.Sun
获取枚举的描述方法如下:
定义Model
/// <summary> /// 兼职工作薪资 /// </summary> public enum PriceTypeEnum { /// <summary> /// 天 /// </summary> [Description("元/天")] day = 1, /// <summary> /// 小时 /// </summary> [Description("元/小时")] hour = 2, /// <summary> /// 周 /// </summary> [Description("元/周")] week = 3, /// <summary> /// 月 /// </summary> [Description("元/月")] month = 4 }
通用 方法:
public class EnumHelper { public static string GetDescription(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(); } /// <summary> /// 获取枚举的描述文本 /// </summary> /// <param name="e">枚举成员</param> /// <returns></returns> public static string GetEnumDescription(object e) { //获取字段信息 System.Reflection.FieldInfo[] ms = e.GetType().GetFields(); Type t = e.GetType(); foreach (System.Reflection.FieldInfo f in ms) { //判断名称是否相等 if (f.Name != e.ToString()) continue; //反射出自定义属性 foreach (Attribute attr in f.GetCustomAttributes(true)) { //类型转换找到一个Description,用Description作为成员名称 System.ComponentModel.DescriptionAttribute dscript = attr as System.ComponentModel.DescriptionAttribute; if (dscript != null) return dscript.Description; } } //如果没有检测到合适的注释,则用默认名称 return e.ToString(); } /// <summary> /// 把枚举的描述和值绑定到DropDownList /// </summary> /// <param name="enumType"></param> /// <returns></returns> public static List<SelectListItem> GetSelectList(Type enumType) { List<SelectListItem> selectList = new List<SelectListItem>(); foreach (object e in Enum.GetValues(enumType)) { selectList.Add(new SelectListItem { Text = GetEnumDescription(e), Value = ((int)e).ToString() }); } return selectList; } }
最后使用时:
@Jyson.ZhanShiQuan.Common.EnumHelper.GetEnumDescription((Jyson.ZhanShiQuan.Model.Enum.PriceTypeEnum)@Model.PriceType)