【发布时间】:2020-05-07 01:24:47
【问题描述】:
有人可以帮我理解枚举类的 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 是通过代码选择的呢?
【问题讨论】:
-
我不知道其他人,但我对你的问题感到非常困惑。您在任何地方都有实际的 C# 枚举吗?如果是这样,如果你能发布它真的会有所帮助......
-
其实我并不想创建Enum,而是想使用Enum标志属性的概念。我的枚举将来自数据库。基于这些 enumIds 的值,我需要编写一些代码来动态创建 2 的幂值。然后我需要再次将其与数据库中的标志值进行比较。
标签: c# asp.net-mvc-3 enums enum-flags