未能在枚举上使用FlagsAttribute(无法解析符号';HasFlag';)
本文关键字:符号 HasFlag 枚举 FlagsAttribute | 更新日期: 2023-09-27 18:28:19
我在c#中有一个asmx web服务,最近发现了非常有用的用于枚举的FlagsAttribute
。我的声明如下:
[Flags]
public enum eAdPriority
{
None = 0,
Gold = 1,
Silver = 2,
Homepage = 4
}
然后我测试枚举如下:
eAdPriority test = eAdPriority.Gold | eAdPriority.Homepage | eAdPriority.Silver;
test.HasFlag(eAdPriority.Gold);
但是,最后一行的HasFlag
部分突出显示为红色无法解析符号"HasFlag",我的代码无法编译。有什么想法吗?
Enum.HasFlag
仅在.NET Framework 4.0或更高版本中可用。如果您使用的是.NETFramework3.5,则可以包含本文中的扩展方法来模拟HasFlag功能。为了完整起见,以下是代码(归功于文章作者):
public static bool HasFlag(this Enum variable, Enum value)
{
// check if from the same type.
if (variable.GetType() != value.GetType())
{
throw new ArgumentException("The checked flag is not from the same type as the checked variable.");
}
Convert.ToUInt64(value);
ulong num = Convert.ToUInt64(value);
ulong num2 = Convert.ToUInt64(variable);
return (num2 & num) == num;
}