我如何检查是否enum
如果标记为过时?
public enum MyEnums
{
MyEnum1,
[Obsolete("How can you know that I'm obsolete?")]
MyEnum2,
MyEnum3
}
现在在运行时,我需要知道哪些是过时的:
foreach (var myEnum in Enum.GetValues(typeof(MyEnums)).Cast<MyEnums>())
{
// How can I check if myEnum is obsolete?
}
以下方法检查枚举值是否具有Obsolete
属性:
public static bool IsObsolete(Enum value)
{
var fi = value.GetType().GetField(value.ToString());
var attributes = (ObsoleteAttribute[])
fi.GetCustomAttributes(typeof(ObsoleteAttribute), false);
return (attributes != null && attributes.Length > 0);
}
你可以这样使用它:
var isObsolete2 = IsObsolete(MyEnums.MyEnum2); // returns true
var isObsolete3 = IsObsolete(MyEnums.MyEnum3); // returns false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)