我有一个具有多个值的枚举(我在枚举内部仅保留了一个值)。我正在从UI中传递此字符串“在线系统”。有没有一种方法可以利用这个枚举来执行条件,而不是像下面这样进行硬编码。
if( types.type == "Online System" )
public enum Type
{
[EnumMember]
Windows
,[EnumMember]
OnlineSystem
}
更新
此外,当我将枚举值编号为Windows = 1时,OnlineSystem = 2,会出现任何问题吗?该代码已经存在,但是我是这样的数字,这会给可能已经使用该代码而不进行编号的代码产生副作用吗?
答案 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();
}