c#通过Description获取枚举名
时间: 2024-01-11 13:02:51 浏览: 106
可以通过反射来获取枚举值的Description属性,然后从中获取枚举名称。具体实现可以参考以下代码:
```csharp
using System;
using System.ComponentModel;
enum MyEnum
{
[Description("EnumValue1")]
Value1,
[Description("EnumValue2")]
Value2
}
class Program
{
static void Main(string[] args)
{
MyEnum myEnum = MyEnum.Value1;
string enumName = Enum.GetName(typeof(MyEnum), myEnum);
DescriptionAttribute[] attributes = (DescriptionAttribute[])typeof(MyEnum).GetField(enumName).GetCustomAttributes(typeof(DescriptionAttribute), false);
string enumDisplayName = attributes.Length > 0 ? attributes[0].Description : enumName;
Console.WriteLine(enumDisplayName); // 输出 "EnumValue1"
}
}
```
在这个例子中,我们定义了一个枚举 `MyEnum`,它有两个枚举值 `Value1` 和 `Value2`,每个枚举值都有一个 `Description` 属性。在 `Main` 方法中,我们首先获取当前枚举值的名称,然后使用反射获取该枚举值的 `Description` 属性,并将其作为枚举名称返回。
阅读全文