迭代使用字符串名称初始化的枚举类型

本文关键字:初始化 枚举 类型 字符串 迭代 | 更新日期: 2023-09-27 18:26:37

是否可以在不知道枚举类型的情况下迭代枚举?

假设我将表示枚举类型的字符串名称传递给方法。

然后,我需要以某种方式从该字符串名称中获取枚举类型,并在集合中迭代以提取枚举中包含的名称/值。

迭代使用字符串名称初始化的枚举类型

您可以使用反射来完成

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);

现在您可以轻松地在valuesnames 上进行迭代

Enum.GetValues(Type.GetType(yourEnumName, true, true));