C#通过反射用枚举名称获取枚举的所有值
时间: 2024-10-17 11:04:17 浏览: 51
在C#中,反射是一种强大的工具,它允许你在运行时检查、操作程序集和类型的信息。如果你想要通过枚举名称获取其所有值,可以利用`Enum.Parse`方法配合`typeof(EnumType)`获取枚举类型,然后遍历该类型的成员。以下是一个示例:
```csharp
using System;
using System.Reflection;
public class EnumExample
{
public enum MyEnum
{
Value1,
Value2,
Value3
}
public static void GetValuesByReflection(string enumName)
{
Type enumType = typeof(MyEnum);
FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
foreach (FieldInfo field in fields)
{
if (field.Name == enumName) // 检查字段名是否匹配
{
int value = (int)field.GetValue(null); // 获取枚举值
Console.WriteLine($"{field.Name}: {value}");
}
}
}
public static void Main()
{
string enumNameToSearch = "Value2";
GetValuesByReflection(enumNameToSearch);
}
}
```
在这个例子中,`GetValuesByReflection`方法接受一个枚举名称,然后通过`FieldInfo`获取到枚举的每个值,并将其转换为整数。
阅读全文
相关推荐












