我想要一个简单的帮助方法将字符串转换为Enum。类似于以下内容,但它不喜欢T作为Enum.Parse中的第一个参数。错误是T是类型参数,但是像变量一样使用。
public static T StringToEnum<T>(String value)
{
return (T) Enum.Parse(T,value,true) ;
}
答案 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);
}