using System;
using System.Collections.Generic;
using System.Reflection;
namespace Edu.Common.Plugin
{
///
/// 枚举帮助类
///
public static class EnumHelper
{
///
/// 获取枚举列表
///
///
///
public static List EnumToList(Type enumType)
{
List list = new List();
FieldInfo[] fieldinfos = enumType.GetFields();
foreach (FieldInfo field in fieldinfos)
{
if (field.FieldType.IsEnum)
{
Object[] objs = field.GetCustomAttributes(typeof(EnumFieldAttribute), false);
Int32.TryParse(field.GetRawConstantValue().ToString(), out int Id);
list.Add(new EnumItem()
{
Id = Id,
Name = ((EnumFieldAttribute)objs[0]).Name
});
}
}
return list;
}
///
/// 获取枚举特性描述值
///
///
///
public static string ToName(this System.Enum obj)
{
if (obj == null)
{
return "";
}
try
{
Type type = obj.GetType();
FieldInfo fild = type.GetField(obj.ToString());
if (fild!=null && fild.IsDefined(typeof(EnumFieldAttribute), true))
{
EnumFieldAttribute enumField = (EnumFieldAttribute)fild.GetCustomAttribute(typeof(EnumFieldAttribute), true);
return enumField.Name;
}
else
{
return "";
}
}
catch
{
return "";
}
}
///
/// 获取枚举成员的值(this是扩展方法的标志)
///
///
///
public static int ToInt(this System.Enum obj)
{
return Convert.ToInt32(obj);
}
}
///
/// 枚举特性标签
///
public class EnumFieldAttribute : System.Attribute
{
///
/// 名称
///
public string Name { get; set; }
///
/// 构造函数
///
///
public EnumFieldAttribute(string name)
{
this.Name = name;
}
}
///
/// 枚举项
///
public class EnumItem
{
///
/// 编号
///
public int Id { get; set; }
///
/// 枚举名称
///
public string Name { get; set; }
}
}