2011-06-15 181 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