2010-03-25 46 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的例子中你可以看到,你必須投出輸出。