如何使用Enum从描述中获取价值

时间:2013-05-22 12:03:11

标签: c# enums

我有一个像

的枚举
public enum Test {a = 1, b, c, d, e }

然后我有一个方法,我传递'a'作为参数,但我需要从枚举中检索相应的值并从方法返回Integer

public int Getvalue(string text)        
{                
    int value = //Need to convert text in to int value.    
    return value;   
}

我将text作为“a”或“b”或“c”传递,但结果需要1,2或3。我已尝试在线找到一些解决方案,但似乎所有人都希望我在枚举中添加[Description]标记以获得价值。

是否可以从C#中的枚举中获取值?

3 个答案:

答案 0 :(得分:3)

您不必添加description标记,只要您将枚举值作为字符串传递,因为ab存在于枚​​举中,您可以使用{{3要将字符串解析为枚举Test,然后您可以获得相应的值,如:

var value = Enum.Parse(typeof(Test), "a");
int integerValue = (int)value;

或者您可以使用Enum.Parse,如果输入字符串无效,则不会引发异常。像:

Test temp;
int integerValue;
if (Enum.TryParse("a", out temp))
{
    integerValue2 = (int)temp;
}

答案 1 :(得分:3)

对于Framework> = 4.0,您可以使用Enum.TryParse

public int GetValue(string text)
{
    Test t;
    if (Enum.TryParse(text, out t)
        return (int)t;       
    // throw exception or return a default value
}

答案 2 :(得分:1)

通用助手,使您能够获得任何类型的枚举值

    public static int? GetValue<T>(string text)
    {
        var enumType = typeof (T);
        if (!enumType.IsEnum)
            return null;

        int? val;
        try
        {
            val = (int) Enum.Parse(enumType, text);
        }
        catch (Exception)
        {
            val = null;
        }

        return val;
    }