【问题标题】:How to create enum object from its type and name of the value?如何根据值的类型和名称创建枚举对象?
【发布时间】:2008-10-03 22:20:04
【问题描述】:

我有一个枚举类型 (System.Type) 和一个包含要设置的枚举值的字符串。

例如给定:

enum MyEnum { A, B, C };

我有 typeof(MyEnum) 和 "B"。

如何创建设置为 MyEnum.B 的 MyEnum 对象?

【问题讨论】:

    标签: c# enums


    【解决方案1】:
    MyEnum enumValue = (MyEnum)Enum.Parse(typeof(MyEnum), "B");
    

    你还有一个不区分大小写的重载。

    【讨论】:

      【解决方案2】:

      我假设您无权访问 MyEnum,只能访问 typeof(MyEnum):

      void foo(Type t)
      {
         Object o = Enum.Parse(t, "B");
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用泛型来做到这一点。我创建了一个实用程序类来包装它:

        public static class Utils {
            public static T ParseEnum<T>(string value) {
                return (T)Enum.Parse(typeof(T), value, true);
            }
        

        然后像这样调用:

        string s = "B";
        MyEnum enumValue = Utils.ParseEnum<MyEnum>(s);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多