我正在尝试评估应用了 FlagsAttribute 的枚举,如下所示。问题是它为确保正确的if语句运行而花费了大量的代码。我有四个if语句,只有在设置了枚举的特定组合时才应该执行,但没有别的:
- 私有的,静态的
- 私人的
- 特权
- 上市
检测所需标志的存在很容易,但我还必须确保没有设置其他标志,这是一个荒谬的代码量,看起来像是维护的噩梦。
[Flags]
public enum AccessModifierType : short
{
Infer = 1,
Public = 2,
Privileged = 4,
Private = 8,
Static = 16
}
任何人都可以重写这个if语句以更简洁吗?
if ((Model.CurrentContext.CurrentAccessModifierType & AccessModifierType.Public) == AccessModifierType.Public
&& (Model.CurrentContext.CurrentAccessModifierType & AccessModifierType.Static) != AccessModifierType.Static
&& (Model.CurrentContext.CurrentAccessModifierType & AccessModifierType.Privileged) != AccessModifierType.Privileged
&& (Model.CurrentContext.CurrentAccessModifierType & AccessModifierType.Private) != AccessModifierType.Private){
}