在实际开发项目中,我们定义了一个枚举,往往我们需要在下拉框或其它地方展示枚举。为了加深印象,也为了帮到有需要的人,我写了一个DEMO。
第一步,我们定义一个枚举:
/// <summary>
/// 测试枚举
/// </summary>
public enum EnumStatus
{
[Description("状态1")]
A = ,
[Description("状态2")]
B = ,
[Description("状态3")]
C =
}
第二步,为了方便查看我们获取的枚举,我们定义一个枚举模型:
/// <summary>
/// 定义枚举模型
/// </summary>
public class EnumModel
{
/// <summary>
/// 枚举名称(类似本实例的A、B、C)
/// </summary>
public string Name { get; set; }
/// <summary>
/// 枚举值(类似本实例的1、2、3)
/// </summary>
public int Value { get; set; }
/// <summary>
/// 枚举描述
/// </summary>
public string Description { get; set; }
}
第三步,编写获取枚举的代码:
/// <summary>
/// 获取枚举
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
static List<EnumModel> Get(Type type)
{
List<EnumModel> list = new List<EnumModel>();
//获取枚举的所有字段
var enumFields = type.GetFields();
//遍历枚举的每个字段,读取每个枚举字段的属性值
foreach (var field in enumFields)
{
EnumModel model = new EnumModel();
var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute), false) as DescriptionAttribute;
if (attribute != null)
{
model.Description = attribute.Description;//枚举描述
model.Name = field.Name;//枚举名称
model.Value = (int)Enum.Parse(type, field.Name);//枚举值
list.Add(model);
}
}
return list;
}
最后一步,使用第三步定义的函数:
static void Main(string[] args)
{
//获取枚举类型
var enumType = typeof(EnumStatus);
//获取枚举的属性
var list = Get(enumType);
//打印获取到的枚举属性值
list.ForEach(item =>
{
Console.WriteLine(string.Format("Description:{0},Name:{1},Value:{2}", item.Description, item.Name, item.Value));//打印枚举属性
});
Console.ReadLine();
}
到此,获取枚举就完成了。。