枚举为字符串值或在条件

时间:2019-01-10 05:23:13

标签: c# asp.net .net c#-4.0 enums

我有一个具有多个值的枚举(我在枚举内部仅保留了一个值)。我正在从UI中传递此字符串“在线系统”。有没有一种方法可以利用这个枚举来执行条件,而不是像下面这样进行硬编码。

if( types.type == "Online System" )

  public enum Type
        {
            [EnumMember]
            Windows
            ,[EnumMember]
            OnlineSystem
        }

更新

此外,当我将枚举值编号为Windows = 1时,OnlineSystem = 2,会出现任何问题吗?该代码已经存在,但是我是这样的数字,这会给可能已经使用该代码而不进行编号的代码产生副作用吗?

1 个答案:

答案 0 :(得分:1)

首先,您可以使用Description属性装饰枚举

left

然后,您可以编写一种方法来使用反射来获取给定Enum值(要比较的值)的描述。

  public enum Type
  {
    [Description("Windows")]
    Windows,
    [Description("Online System")]
    OnlineSystem
  }

这将使您能够检查

public static string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes =
        (DescriptionAttribute[])fi.GetCustomAttributes(
        typeof(DescriptionAttribute),
        false);

    if (attributes != null &&
        attributes.Length > 0)
        return attributes[0].Description;
    else
        return value.ToString();
}