c#获取枚举以及枚举中的描述
时间: 2023-11-10 18:10:18 浏览: 120
详解c#中的枚举.docx
可以使用反射来获取枚举值和描述。具体步骤如下:
1.定义一个枚举类型:
```
public enum Gender
{
[Description("男")]
Male = 1,
[Description("女")]
Female = 2,
}
```
2.通过反射获取枚举值:
```
var genderValues = Enum.GetValues(typeof(Gender));
foreach (var genderValue in genderValues)
{
Console.WriteLine(genderValue); // 输出 Male, Female
}
```
3.通过反射获取枚举值的描述:
```
var genderValues = Enum.GetValues(typeof(Gender));
foreach (var genderValue in genderValues)
{
var fieldInfo = genderValue.GetType().GetField(genderValue.ToString());
var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
Console.WriteLine(attributes[0].Description); // 输出 男, 女
}
```
需要注意的是,如果一个枚举值没有描述,则上述代码会抛出异常。可以使用`attributes.Length > 0 ? attributes[0].Description : genderValue.ToString()`来避免异常。
阅读全文