您的位置:首页 > 编程语言 > C#

C#获取枚举的描述

2016-07-14 14:47 281 查看
public enum StatusEnum
{
/// <summary>
/// 运行中
/// </summary>
[Description("运行中")]
Running = 1,
/// <summary>
/// 已关闭
/// </summary>
[Description("已关闭")]
Stopped = 0
}


public class EnumHelper
{
#region 静态方法
public static Dictionary<string, string> GetEnumDescription<T>()
{
Dictionary<string, string> dic = new Dictionary<string, string>();

FieldInfo[] fields = typeof(T).GetFields();

foreach (FieldInfo field in fields)
{

if (field.FieldType.IsEnum)
{

object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);

string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;

dic.Add(field.Name, description);

}
}

return dic;
}

/// <summary>
/// 获取对应的枚举描述
/// </summary>
public static List<KeyValuePair<string, string>> GetEnumDescriptionList<T>()
{
List<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>();

FieldInfo[] fields = typeof(T).GetFields();

foreach (FieldInfo field in fields)
{
if (field.FieldType.IsEnum)
{

object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);

string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;

result.Add(new KeyValuePair<string, string>(field.Name, description));

}

}
return result;
}

/// <summary>
/// 获取枚举的 值和描述
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<KeyValuePair<int, string>> GetEnumValueDescriptionList<T>()
{
List<KeyValuePair<int, string>> result = new List<KeyValuePair<int, string>>();
FieldInfo[] fields = typeof(T).GetFields();
foreach (FieldInfo field in fields)
{
if (field.FieldType.IsEnum)
{
object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
result.Add(new KeyValuePair<int, string>(Convert.ToInt32(field.GetValue(null)), description));
}
}

return result;
}

public static string GetDescriptionByEnumName<T>(string name)
{
try
{
Dictionary<string, string> dic = GetEnumDescription<T>();
string description = dic[name];
return description;
}
catch (Exception ex)
{
return "";
}
}
#endregion
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: