C#,StringToEnum,我可以使它成为一个泛型函数

时间:2009-03-14 01:32:35

标签: c#

我想要一个简单的帮助方法将字符串转换为Enum。类似于以下内容,但它不喜欢T作为Enum.Parse中的第一个参数。错误是T是类型参数,但是像变量一样使用。

public static T StringToEnum<T>(String value)
        {
            return (T) Enum.Parse(T,value,true) ;
        }

3 个答案:

答案 0 :(得分:7)

试试这个:

public static T StringToEnum<T>(String value)
{
     return (T)Enum.Parse(typeof(T), value, true);
}

答案 1 :(得分:2)

public static T StringToEnum<T>(String value)
{
    return (T) Enum.Parse(typeof(T),value,true) ;
}

你在做什么就像使用'int'作为Type,但它不是Type对象。要获取Type对象,可以使用typeof(int)。

答案 2 :(得分:0)

这是我使用的方法扩展。

/// <summary>
/// Will parse and string value and return the Enum given.  Case is ignored when doing the parse.
/// </summary>
/// <param name="typeOfEnum">The type of the Enum to Parse</param>
/// <param name="value">The string value for the result of the Enum</param>
/// <param name="errorValue">If an error is encountered this value is returned.  (For example could be an Enum)</param>
/// <returns>Returns Enum Object</returns>
public static T ToEnum<T>(this string value)
{
    return (T)Enum.Parse(typeof(T), value, true);
}