Enum枚举的高级使用,和项目高度集成,让你少些N行代码。
首先:随便来一个枚举:如下:
/// <summary>
/// 查验结果,0:未审核 1:审核通过 -1:审核未通过
/// </summary>
public enum ContainerStatusEnum
{
/// <summary>
/// 未审核
/// </summary>
[Description("未审核")] WSH = 0,
/// <summary>
/// 审核通过
/// </summary>
[Description("审核通过")] SHTG = 1,
/// <summary>
/// 审核未通过
/// </summary>
[Description("审核未通过")] SHWTG = -1,
}
第二步:定义帮助类,这个找官方的就够了,如下:
public static class EnumsExtensions
{
public static string GetDescription(this Enum val)
{
var field = val.GetType().GetField(val.ToString());
var customAttribute = Attribute.GetCustomAttribute(field!, typeof(DescriptionAttribute));
return customAttribute == null ? val.ToString() : ((DescriptionAttribute)customAttribute).Description;
}
}
第三部:开始各种花式操作:
首先我们通过枚举的指定值去拿描述:
var aaa = EnumsExtensions.GetDescription(ContainerStatusEnum.SHTG);
//得到结果:aaa=审核通过。
说明代码是成功执行的,且拿到了正确的值,那么接下来结合我们实际开发场景:
1、我们从数据库拿到的值1,0,-1 。
怎么转换么?
ContainerStatusEnum regionenum = (ContainerStatusEnum)Enum.ToObject(typeof(ContainerStatusEnum), -1);
2、我们从数据库拿到的值是:WSH,SHTG,SHWTG 这种。
string str = "WSH";
ContainerStatusEnum regionenum = (ContainerStatusEnum)System.Enum.Parse(typeof(ContainerStatusEnum), str);
3、然后带入公式:
var status_text = EnumsExtensions.GetDescription(regionenum);
//运行之后,成功拿到状态值。
运行之后,成功拿到状态值。