using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace demo
{
/// <summary>
/// 枚举类
/// </summary>
public enum TypeEnum
{
[EnumText("活跃型")]
Active = 1,
[EnumText("健康型")]
Healthy = 2,
[EnumText("稳健型")]
Steady = 3
}
/// <summary>
/// 自定义Attribute
/// </summary>
public class EnumText : Attribute
{
public EnumText(String text)
{
this.Text = text;
}
public String Text { get; set; }
}
/// <summary>
/// 帮助类
/// </summary>
public class EnumHelper
{
/// <summary>
/// 获取自定义attribute
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="enumObj"></param>
/// <returns></returns>
public static T GetAttribute<T>(Enum enumObj)where T:Attribute
{
Type type = enumObj.GetType();
Attribute attr = null;
try
{
String enumName = Enum.GetName(type, enumObj); //获取对应的枚举名
FieldInfo field = type.GetField(enumName);
attr = field.GetCustomAttribute(typeof(T), false);
}
catch (Exception ex)
{
Console.WriteLine(ex);
// throw ex;
}
return (T)attr;
}
/// <summary>
///
/// </summary>
/// <param name="args"></param>
public static void Main(String[] args)
{
var enum1 = TypeEnum.Active;
Console.WriteLine(GetAttribute<EnumText>(enum1).Text);
Console.WriteLine("输入任意键结束");
Console.ReadKey();
}
}
}
测试结果: