public enum Result { [Description("成功了,真棒")] Success = 0, [Description("失败了,继续努力")] Failure = 1 } /// <summary> /// 枚举实体 /// </summary> public class EnumViewModel { /// <summary> /// 枚举数值 /// </summary> public int Value { get; set; } /// <summary> /// 枚举中文值 /// </summary> public string Description { get; set; } } /// <summary> /// 获取枚举列表 /// </summary> /// <param name="enumType">枚举类型</param> /// <returns>枚举列表</returns> public List<EnumViewModel> GetEnumList(Type enumType) { var enumList = new List<EnumViewModel>(); var array = Enum.GetValues(enumType); foreach (var item in array) { var fieldInfo = item.GetType().GetField(item.ToString()); var attribArray = fieldInfo.GetCustomAttributes(false); var ticketControlType = new EnumViewModel { Description = ((DescriptionAttribute)attribArray[0]).Description, Value = (int)item }; enumList.Add(ticketControlType); } return enumList; }
调用 var list = GetEnumList(typeof(Result)); foreach (var enumViewModel in list) { var value = enumViewModel.Value; var description = enumViewModel.Description; }
首先说枚举是为了使程序容易编写、阅读和维护,你这样写不太好吧!
public enum Show { Ok=1, //1、可以指定值 如果不指定第一个生成后是0 后面的依次1、2、3等 Error=2 //2、如果ok=1,error=2,common=4 后面的值8、16 就是标志枚举 }
//这个例子貌似不恰当 意思明白 就好了 int val = 1; //假如前台传递到的一个参数 string reslutStr = string.Empty; if (resultEnum==(int)Model.Enum.Show.Ok) { reslutStr = "成功了,真棒"; } else { reslutStr = "失败了,继续努力"; } Response.Write(reslutStr); Response.End();
明白了,我这种写法确实不太好,谢谢!
1 class Program { 2 static void Main(string[] args){ 3 var dic = new Dictionary<int, string>(); 4 dic.Add(1,"答对了"); 5 dic.Add(0,"答错了"); 6 7 int value = 1; 8 Console.WriteLine(dic[value]); 9 } 10 }
你的需求考虑字典实现,枚举并不合适。
也可以这样用的:
public enum Show
{
[Description("成功了,真棒")]
成功
[Description("失败了,继续努力")]
失败
}
然后再写一个方法获取枚举的Description.
楼上正解