【问题标题】:iterate through an enum type initialized with a string name?遍历用字符串名称初始化的枚举类型?
【发布时间】:2013-08-05 11:31:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# enums magic-string


    【解决方案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();
    }
    

    【讨论】:

      【解决方案2】:

      是的,如果您知道枚举类型,则可以访问枚举的名称和值。例如看下面的代码sn -p:

      string enumTypeName = "qualified enum type name";
      
      var enumType = Type.GetType(enumTypeName);
      
      var values = Enum.GetValues(enumType);
      var names  = Enum.GetNames(enumType);
      

      现在您可以轻松地迭代 valuesnames

      【讨论】:

        【解决方案3】:
        Enum.GetValues(Type.GetType(yourEnumName, true, true));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-23
          • 2014-08-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多