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

时间:2013-08-05 11:31:29

标签: c# enums magic-string

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

假设我传入一个字符串名称,表示方法的枚举类型。

然后我会以某种方式从该字符串名称中获取枚举类型并遍历该集合以提取枚举中包含的名称/值。

3 个答案:

答案 0 :(得分:1)

你可以使用反射来做到这一点

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

答案 1 :(得分:1)

是的,如果您知道类型,则可以访问枚举的名称和值。例如,请参阅以下代码段:

string enumTypeName = "qualified enum type name";

var enumType = Type.GetType(enumTypeName);

var values = Enum.GetValues(enumType);
var names  = Enum.GetNames(enumType);

现在,您可以轻松地对valuesnames

进行迭代

答案 2 :(得分:0)

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