有人可以帮我理解枚举类的 HasFlag 方法的内部逻辑吗?让我先解释一下我的要求。我已经创建了一个带有标志属性的枚举,然后使用 HasFlag() 函数从位标志值中获取选定的组合。但在这里我的要求是不同的。我的数据库中有一个表,其中列出了不同的枚举值。结构如下。
EnumTypeID EnumVal EnumID Description
=========== ========== ========= ================
1 enum1 0 xxxxxxxxx
1 enum2 1 xxxxxxxxx
1 enum3 2 xxxxxxxxx
2 enum4 0 xxxxxxxxx
2 enum5 1 xxxxxxxxx
假设我有另一个表,它存储 EnumTypeID 1 的最终标志组合。因此,假设该表列保存不同的组合,例如
0 = Nothing selected
1 = enum1 selected
2 = enum2 selected
3 = enum1 & enum2 selected
4 = enum3 selected
5 = enum1 & enum3 selected
6 = enum2 & enum3 selected
7 = enum1 & enum2 & enum3 selected
==================================================== ===========
现在我如何以编程方式(在 C# .net4.5 中)实现这一点。我需要首先查询第一个表并获取特定 EnumTypeID 的枚举列表。现在我需要从第二个表中获取所选标志的值(假设值为 5)。那我怎么能说基本上 enum1 & enum3 是通过代码选择的呢?