对于枚举类上的[Description(" ")] 如何获取。 如下图
需要一个类 DescriptionAttribute 和 一个方法 如下
using System;
[AttributeUsage(AttributeTargets.Field)]
public class DescriptionAttribute : Attribute
{
public string Description { get; set; }
public DescriptionAttribute()
{
}
public DescriptionAttribute(string description)
{
this.Description = description;
}
}
using System;
using System.Web;
using System.Reflection;
using System.Collections.Generic;
public static IDictionary<string, string> ToDescriptionDictionary(Type enumType)
{
string cacheKey = "CACHE_ENUM_KEYVALUE_" + enumType.FullName.ToUpper();
var dictionary = HttpContext.Current.Cache[cacheKey] as Dictionary<string, string>;
if (dictionary == null)
{
dictionary = new Dictionary<string, string>();
object enumInstance = enumType.Assembly.CreateInstance(enumType.FullName);
FieldInfo[] fieldInfos = enumType.GetFields();
foreach (FieldInfo fieldInfo in fieldInfos)
{
var descriptionAttributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
if (descriptionAttributes.Length > 0)
{
var key = ((int) fieldInfo.GetValue(enumInstance)).ToString();
var value = descriptionAttributes[0].Description;
if (!dictionary.ContainsKey(key))
{
dictionary.Add(key, value);
}
}
}
HttpContext.Current.Cache.Insert(cacheKey, dictionary);
}
var result = new OptimizedDictionary<string, string>();
foreach (var kvp in dictionary)
{
result.Add(kvp.Key, kvp.Value);
}
return result;
}
结果展示: