可以根据字符串名称加载枚举吗?

时间:2010-03-25 03:19:30

标签: c# enums

好吧,我不认为标题说得对......但是这里有:

我有一个大约有40个枚举的课程。即:

    Class Hoohoo
    {

       public enum aaa : short
       {
          a = 0,
          b = 3
       }

      public enum bbb : short
      {
        a = 0,
        b = 3
      }

      public enum ccc : short
      {
        a = 0,
        b = 3
      }
}

现在说我有一个字符串和值的字典,每个字符串都是上面提到的枚举的名称:

Dictionary<string,short>{"aaa":0,"bbb":3,"ccc":0}

我需要将“aaa”更改为HooBoo.aaa以查找0.由于枚举是静态的,因此无法找到执行此操作的方法。否则,我将不得不为每个枚举编写一个方法来将字符串绑定到它。我可以这样做,但那就是编写的代码。

谢谢, 库特

4 个答案:

答案 0 :(得分:4)

您必须使用Reflection来获取基础枚举类型:

Type t = typeof(Hoohoo);
Type enumType = t.GetNestedType("aaa");
string enumName = Enum.GetName(enumType, 0);

如果您想获得实际的枚举值,则可以使用:

var enumValue = Enum.Parse(enumName, enumType);

答案 1 :(得分:2)

使用

aaa myEnum =(aaa) Enum.Parse(typeof(aaa), "a");

答案 2 :(得分:0)

您想要转换字符串 - &gt;枚举? This应该有所帮助。

答案 3 :(得分:0)

请记住,Enum.Parse没有强类型...我认为这将是你的场景中的一个真正的限制。从Ngu的例子中可以看出,你必须输出输出。