2010-03-25 43 views
5

好吧,我不认为标题说得对...但是这里有:可能基于字符串名称加载枚举?

我有一个约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 
     } 
} 

现在说我有一个字符串和值的字典,每串上述枚举的名字:我需要改变“AAA”到HooBoo.aaa到

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

看起来0.似乎无法找到一种方法来做到这一点,因为枚举是静态的。否则,我将不得不为每个枚举编写一个方法来将字符串绑定到它。我可以做到这一点,但多数代码来写。

感谢, 库特

回答

4

你将不得不使用反射来获取潜在的枚举类型:

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

如果你想获得实际的枚举值,那么你可以使用:

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

完美。我知道会有一个简单的答案....谢谢。 – Cooter 2010-03-25 14:18:18

0

你想转换一个字符串 - >枚举? This应该有所帮助。

2

使用

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

只要记住,Enum.Parse不是强类型的......我认为,这将是在方案中真正的限制。从Ngu的例子中你可以看到,你必须投出输出。