有没有办法在枚举中组合标志但限制可能的组合? 我有这样的枚举:
[Flags]
public enum CopyFlags
{
/// <summary>
/// Copy members regardless of their actual case
/// </summary>
CaseSensitive = 1,
/// <summary>
/// Indicates if a leading underscore (e.g. _myMember) should be ignored while comparing member-names.
/// </summary>
IgnoreLeadingUnderscore = 2,
/// <summary>
/// Indicates if only properties should be copied. Usefull when all technical data is stored in properties.
/// </summary>
PropertiesOnly = 4
}
现在我还要介绍一个FieldsOnly
- 值,但要确保仅在PropertiesOnly
不存在时才使用它。这可能吗?
答案 0 :(得分:4)
不,这是不可能的。甚至无法将值限制为列出的项目。例如,C#中允许以下内容:
CopyFlags flags = (CopyFlags)358643;
您需要在包含CopyFlags
参数的方法中明确执行验证。
答案 1 :(得分:1)
不,在枚举的范围内不可能;相反,你必须验证它:
public void DoSomething(CopyFlag flag)
{
if (flag.HasFlag(CopyFlags.PropertiesOnly) && flag.HasFlag(CopyFlags.FieldsOnly))
throw new ArgumentException();
}