获得枚举的 Description

在C#中,我们可以通过反射来获取枚举的描述。这通常是通过将System.ComponentModel.DescriptionAttribute属性应用于枚举值来完成的。以下是一个简单的示例,展示了如何获取枚举值的描述。

首先,定义一个带有描述属性的枚举:

using System;
using System.ComponentModel;
using System.Reflection;
 
public enum Colors
{
    [Description("红色")]
    Red,
    [Description("绿色")]
    Green,
    [Description("蓝色")]
    Blue
}

然后,编写一个方法来获取枚举值的描述:

public static string GetEnumDescription(Enum value)
{
    FieldInfo field = value.GetType().GetField(value.ToString());
 
    DescriptionAttribute attribute = field.GetCustomAttribute<DescriptionAttribute>();
 
    return attribute == null ? value.ToString() : attribute.Description;
}

使用这个方法来获取描述:

Colors myColor = Colors.Red;
string description = GetEnumDescription(myColor);
Console.WriteLine(description); // 输出: 红色

 ②用扩展方法实现:

/// <summary>
/// 扩展方法,获得枚举的Description
/// </summary>
/// <param name="value">枚举值</param>
/// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用</param>
/// <returns>枚举的Description</returns>
public static string GetDescription(this Enum value, Boolean nameInstead = true)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    if (name == null)
    {
        return null;
    }
  
    FieldInfo field = type.GetField(name);
    DescriptionAttribute attribute = System.Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
  
    if (attribute == null && nameInstead == true)
    {
        return name;
    }
    return attribute?.Description;
}

//举例 :var color = Colors.Green.GetDescription();  // 得到“绿色”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值