C# 获取 Enum 枚举的 Description 描述内容,根据 Description 获取枚举

时间:2025-01-25 08:12:54

参考:/jonney-wang/p/

思路:通过反射获取枚举类的Field,再用 Field 获取 DescriptionAttribute 属性。反之亦然

// 枚举
public enum enumStudent
{
    [Description("性别")]
    sex = 0,
    [Description("年龄")]
    age = 1,
}

// 获取方法
public string GetDescriptionByEnum(Enum enumValue)
{
    string value = ();
     field = ().GetField(value);
    object[] objs = (typeof(DescriptionAttribute), false);    //获取描述属性
    if ( == 0)    //当描述属性没有时,直接返回名称
        return value;
    DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
    return ;
}


// 调用示例
GetDescriptionByEnum() → 年龄


public T GetEnumByDescription<T>(string description) where T : Enum
{
    [] fields = typeof(T).GetFields();
    foreach( field in fields)
    {
        object[] objs = (typeof(DescriptionAttribute), false);    //获取描述属性
        if ( > 0 && (objs[0] as DescriptionAttribute).Description == description)
        {
            return (T)(null);
        }
    }

    throw new ArgumentException(("{0} 未能找到对应的枚举.", description), "Description");
}

// 调用示例
GetEnumByDescription<enumStudent>("性别").ToString() → sex