using System.ComponentModel;
/// <summary>
/// 标签枚举
/// </summary>
public enum StatusTag
{
/// <summary>
/// 正确
/// </summary>
[Description("正确")]
Success,
/// <summary>
/// 错误
/// </summary>
[Description("错误")]
Error,
/// <summary>
/// 警告
/// </summary>
[Description("警告")]
Warning
}
获取枚举描述信息
/// <summary>
/// 根据枚举值,获取Description
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string Description(Enum value)
{
if (value == null)
return "";
var fieldInfo = value.GetType().GetField(value.ToString());
var attribArray = fieldInfo.GetCustomAttributes(false);
return attribArray.Length == 0 ? value.ToString() : (attribArray[0] as DescriptionAttribute).Description;
}
/// <summary>
/// 获取枚举的所有描述值集合
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static List<string> GetDescriptions(Type type)
{
List<string> results = new List<string>();
if (type == null)
return results;
var fieldInfo = type.GetFields();
if (fieldInfo != null && fieldInfo.Length > 0)
{
foreach (var item in fieldInfo)
{
var attribArray = item.GetCustomAttributes(false);
if (attribArray.Count() > 0)
{
results.Add((attribArray[0] as DescriptionAttribute).Description);
}
}
}
return results;
}
/// <summary>
/// 根据枚举的枚举字符串获取描述信息
/// </summary>
/// <param name="type"></param>
/// <param name="enumValue"></param>
/// <returns></returns>
public static string GetDescriptionByValue(Type type, string enumValue)
{
if (type == null || string.IsNullOrEmpty(enumValue))
return "";
var fieldInfo = type.GetField(enumValue);
var attribArray = fieldInfo.GetCustomAttributes(false);
return attribArray.Length == 0 ? enumValue : (attribArray[0] as DescriptionAttribute).Description;
}
/// <summary>
/// 根据枚举的描述信息获取枚举字符串
/// </summary>
/// <param name="type"></param>
/// <param name="description">描述信息</param>
/// <returns></returns>
public static string GetEnumStrByDes(Type type, string description)
{
if (type == null||string.IsNullOrEmpty(description))
return "";
var fieldInfos = type.GetFields();
foreach (var field in fieldInfos)
{
var attribArray1 = field.GetCustomAttributes(false);
if (attribArray1.Count() == 0)
{
continue;
}
var des = (attribArray1[0] as System.ComponentModel.DescriptionAttribute).Description;
if (des.Equals(description))
{
string value = field.Name;
return value;
}
}
return "";
}
END |