如果我们想要把字符串转成枚举类型,NetCore和.NET>4时我们都可以直接使用
Enum.TryParse("item", out ItemEnum myItem);
在最新的>C#7中我们又有了新方法,在使用过程中最好用以下方法:
ItemEnum myItem = (ItemEnum) Enum.Parse(typeof(ItemEnum), "item", true);
可以把它封装一下,变成一个通用方法
public static T ParseEnum<T>(string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
像下面这样调用:
ItemEnum myItem= EnumUtil.ParseEnum<ItemEnum>("item");
或者也可以封装成扩展方法
public static T ToEnum<T>(this string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
ItemEnum myItem = "item".ToEnum<ItemEnum>();
在这个基础上如果我们想在没有匹配上时返回默认值,可以封装成这样:
public static T ToEnum<T>(this string value, T defaultValue)
{
if (string.IsNullOrEmpty(value))
{
return defaultValue;
}
T result;
return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}
使用方法如下 :
ItemEnum myItem = "item".ToEnum(ItemEnum.One);
推荐文章: