C# string转enum的泛型转换方法
开发中常用到string 到枚举的转换,写了个泛型转换demo
// demo
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var ret = StringToEnum<Color>("Red");
if(ret == Color.Red)
{
Console.WriteLine("Hello World!");
}
}
//静态方法
public static T StringToEnum<T>(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return default(T);
}
return (T)Enum.Parse(typeof(T), value);
}
}
internal enum Color
{
Red = 1,
Blue = 2
}
此时有同学会有疑问,问啥不使用扩展方法来,如果我们这样写的话:
public static T StringToEnum<T>(this string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return default(T);
}
return (T)Enum.Parse(typeof(T), value);
}
会报错的,因为扩展方法必须在非泛型静态类中使用