是否可以在不知道其类型的情况下迭代枚举?
假设我将表示枚举类型的字符串名称传递给方法。
然后我会以某种方式需要从该字符串名称中获取枚举类型并遍历集合以提取枚举中包含的名称/值。
是否可以在不知道其类型的情况下迭代枚举?
假设我将表示枚举类型的字符串名称传递给方法。
然后我会以某种方式需要从该字符串名称中获取枚举类型并遍历集合以提取枚举中包含的名称/值。
你可以使用反射来做到这一点
List<KeyValuePair<string, object>> GetEnumInfo(string name)
{
var type = Type.GetType(name);
return Enum.GetValues(type)
.Cast<object>()
.Select(v => new KeyValuePair<string, object>(Enum.GetName(type, v), v))
.ToList();
}
是的,如果您知道类型,您可以访问枚举的名称和值。例如看下面的代码片段:
string enumTypeName = "qualified enum type name";
var enumType = Type.GetType(enumTypeName);
var values = Enum.GetValues(enumType);
var names = Enum.GetNames(enumType);
现在您可以轻松地迭代values
并names
Enum.GetValues(Type.GetType(yourEnumName, true, true));