using System;
using System.ComponentModel;
namespace ConsoleApp1
{
internal class Program
{
private static void Main(string[] args)
{
var value = GetEnumValueByDescription("在读", typeof(StudentStatusEnum));
Console.WriteLine(value.ToString());
Console.ReadKey();
}
#region 根据枚举描述获取枚举值
/// <summary>
/// 根据枚举描述获取枚举值
/// </summary>
/// <param name="description">需要匹配的枚举描述</param>
/// <param name="en">枚举类型</param>
/// <returns></returns>
public static object GetEnumValueByDescription(string description, Type en)
{
var fields = en.GetFields();
for (int i = 1, count = fields.Length; i < count; i++)
{
var value = (int)Enum.Parse(en, fields[i].Name);
var enumAttributes = (DescriptionAttribute[])fields[i].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (enumAttributes.Length > 0)
{
var desc = enumAttributes[0].Description;
if (desc == description)
{
return value;
}
}
}
return null;
}
#endregion
}
/// <summary>
/// 学生状态
/// </summary>
public enum StudentStatusEnum
{
/// <summary>
/// 在读
/// </summary>
[Description("在读")] Study = 0,
/// <summary>
/// 毕业
/// </summary>
[Description("毕业")] Graduate = 1,
/// <summary>
/// 退学
/// </summary>
[Description("退学")] Leave = 2,
/// <summary>
/// 休学
/// </summary>
[Description("休学")] Suspend = 3
}
}