首先定义一个枚举:两个值:已确认、未确认。
public enum ConfirmStatusEnum { [Description("未确认")] unconfirmed = 1, [Description("已确认")] confirmed = 2 }
转换枚举的方法:
private void InitConfirmStatus() { int values = 0; object[] atts = null; ConfirmStatusEntity statusEntity = null; DescriptionAttribute description = null; List<ConfirmStatusEntity> status = new List<ConfirmStatusEntity>(); Type type = typeof(ConfirmStatusEnum);//取到枚举的Type var fields = type.GetFields();//获取枚举中所有字段 foreach (var item in fields) { if (item.FieldType != type)//如果类型不是枚举的则跳过 { continue; } statusEntity = new ConfirmStatusEntity();//初始化实体 values = (int)item.GetValue(item.Name);//根据名称获取,枚举项的值 statusEntity.ID = values; atts = item.GetCustomAttributes(typeof(DescriptionAttribute), false); if (atts != null && atts.Length != 0) { description = (DescriptionAttribute)atts[0];//获取特性的描述信息; description就是特性中的描述信息 //给实体复制 statusEntity.StatusName = description.Description; status.Add(statusEntity); } } //这个地方是我实际情况的处理,供参考 ConfirmStatus = status; SelectConfirmStatus = status.FirstOrDefault(); }
要转成的实体(根据实际情况,此操作可选):
1 public class ConfirmStatusEntity 2 { 3 /// <summary> 4 /// 此项对应枚举的int值,即 0,1 .... 5 /// </summary> 6 public int ID { get; set; } 7 8 /// <summary> 9 /// 此项对应枚举中特性的具体描述信息 10 /// </summary> 11 public string StatusName { get; set; } 12 }
里面有些是我实际情况使用的实体,供参考。