2011-06-15 179 views
4

我認爲這個問題的類型需要一些代碼:如何得到一個枚舉的整數值,當我只有枚舉

private TypeValues GetEnumValues(Type enumType, string description) 
     { 
      TypeValues wtv = new TypeValues(); 
      wtv.TypeValueDescription = description; 
      List<string> values = Enum.GetNames(enumType).ToList(); 
      foreach (string v in values) 
      { 
       //how to get the integer value of the enum value 'v' ????? 
       wtv.TypeValues.Add(new TypeValue() { Code = v, Description = v }); 
      } 
      return wtv; 

     } 

這樣稱呼它:

GetEnumValues(typeof(AanhefType), "some name"); 

GetEnumValues函數我有枚舉的值。所以我迭代的值,我想獲得該枚舉值的整數值也。

所以我的價值觀是「紅」,「綠」,我也希望得到0和1

,當我在我的函數有枚舉,我可以從字符串和投枚舉值它的枚舉,然後將其轉換爲int,但在這種情況下,我沒有枚舉本身,但只有枚舉的類型。

我試着將實際枚舉作爲參數傳入,但我不允許將枚舉作爲參數傳遞。

所以現在我卡住.....

回答

5
private TypeValues GetEnumValues(Type enumType, string description) 
     { 
      TypeValues wtv = new TypeValues(); 
      wtv.TypeValueDescription = description; 
      List<string> values = Enum.GetNames(enumType).ToList(); 
      foreach (string v in values) 
      { 
       //how to get the integer value of the enum value 'v' ????? 

       int value = (int)Enum.Parse(enumType, v); 

       wtv.TypeValues.Add(new TypeValue() { Code = v, Description = v }); 
      } 
      return wtv; 

     } 

http://msdn.microsoft.com/en-us/library/essfb559.aspx

Enum.Parse將採取類型和字符串並返回枚舉值的一個參考 - 這可然後簡單地轉換爲int。

+0

這個工程!奇怪的是,在直接窗口中嘗試了一些代碼,並且也沒有顯示出int值:(int)Enum.Parse(enumType,v)顯示我'De Heer',它是字符串' v」。但是在運行代碼時,它會顯示一個int。怪異的...... – Michel 2011-06-15 07:31:40

5

嘗試

(int)Enum.Parse(enumType, v) 
+0

+1當有一種方法已經完成時,沒有必要自己循環訪問這些值。 – Guffa 2011-06-15 07:01:32

0
public static class StringEnum 
{ 


    public static string GetStringValue(Enum value) 
    { 
     string output = null; 
     Type type = value.GetType(); 

     FieldInfo fi = type.GetField(value.ToString()); 
     StringValue[] attr = fi.GetCustomAttributes(typeof(StringValue), false) as StringValue[]; 

     if (attr.Length > 0) 
     { 
      output = attr[0].Value; 
     } 
     return output; 
    } 
} 

是方法獲取字符串值。

public enum CampaignRequestType { [StringValue("None")] None = 0, [StringValue("Pharmacy Cards")] Pharmacy_Cards = 1,[StringValue("Prospect Campaign")] Prospect_Campaign = 2,[StringValue("Tradeshow/Advertising")] Tradeshow_Advertising = 3 } 

它是一個枚舉...

string item = StringEnum.GetStringValue((Enumeration.CampaignRequestType)updateRequestStatus.RequestType_Code); 
這裏

(Enumeration.CampaignRequestType)是我列舉 和updateRequestStatus.RequestType_Code是數據庫領域的int類型

我投INT價值枚舉

+0

歡迎來到StackOverflow!嘗試使用更多的代碼編輯工具,以便您的答案更具可讀性。 – Mzf 2013-06-13 16:54:53