获取枚举的对应值

xiaoxiao2021-02-28  72

首先定义一个扩展属性的类

/// <summary> /// 自定义类的信息 /// </summary> [AttributeUsage(AttributeTargets.All, AllowMultiple = true)] public class ExtendsAttribute:Attribute { /// <summary> /// 描述性信息 /// </summary> public String Description { get; set; } /// <summary> /// 静态的值 /// </summary> public int Key { get; set; } public ExtendsAttribute(string description) { Description = description; } public ExtendsAttribute(int key,string description) { Key = key; Description = description; } } 然后在枚举类中加入属性类

public enum VirtualOrderStatus { /// <summary> /// 待付款 /// </summary> [ExtendsAttribute(0, "待付款")] WaitPayment = 0, /// <summary> /// 已付款 /// </summary> [ExtendsAttribute(1, "已付款")] Paid = 1, /// <summary> /// 已发货 /// </summary> [ExtendsAttribute(2, "已发货")] SendGoods = 2, /// <summary> /// 已收货 /// </summary> [ExtendsAttribute(3, "已收货")] Deliveries = 3, /// <summary> /// 已完成 /// </summary> [ExtendsAttribute(4, "已完成")] Finished = 4, /// <summary> ///已取消 /// </summary> [ExtendsAttribute(5, "已取消")] Canceled = 5 }获取枚举的中文值

/// <summary> /// 获取虚拟订单状态 /// </summary> /// <returns></returns> public static Dictionary<int, string> GetVirtualOrderStatus() { Dictionary<int, string> state = new Dictionary<int, string>(); Type orderStatus = typeof(Common.Enum.VirtualOrderStatus); string[] name = orderStatus.GetEnumNames(); for (int i = 0; i < name.Length; i++) { System.Reflection.FieldInfo field = orderStatus.GetField(name[i]); Common.ExtendsAttribute extendAtrr = field.GetCustomAttributes(typeof(Common.ExtendsAttribute), false)[0] as Common.ExtendsAttribute; state.Add(extendAtrr.Key, extendAtrr.Description); } if (state.Count > 0) { return state; } return null; }

转载请注明原文地址: https://www.6miu.com/read-41712.html

最新回复(0)