问题标签 [enum-flags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
9939 浏览

c# - 应该“或”与 .Net4 Hasflags 一起使用: enum.HasFlag(AccessRights.Read | AccessRights.Write)

我正在尝试新的 HasFlags 功能,并想知道以下是否可行:

enum.HasFlag(AccessRights.Read | AccessRights.Write)

...因为它似乎没有...

0 投票
2 回答
2422 浏览

c# - ASP.NET MVC 中的访问控制使用基于 [Flags] 的枚举到 SQL 中的 int 权限管理

这个问题的灵感来自this SO question about Access Control in ASP.NET MVC。在这里,我试图将公认的答案转化为切实的解决方案。

答案提到使用FileSystemSecurity作为管理权限的灵感。在这里,我还使用带有 Flags 属性的枚举来为我的所有对象定义 ACL。此外,我的对象的每个成员都将存储在 SQL 中的一列中。假设一个简化的 Linq2SQL、EF 或 nHibernate ORM 映射。

编辑:为这种方法添加了以下好处/理由

这种安全模型的灵感来自FileSystemRights,这是一种管理文件级别权限的 .NET 方法。

我喜欢这种方法的主要原因之一是我可以通过将所有单独的 ACL 组合在一起来轻松创建所有权限的摘要。我也喜欢我可以添加一个拒绝 ACL 来删除继承的权限。

/结束编辑

enum然后我想到我可以通过来自更多特权用户的数值来比较特权较低的用户enum

我认为此定义将允许在 SQL 数据库中快速轻松地识别用户,而无需在后端解析枚举。(通过查找非特权用户select users from permissions where security < DBAceessRights.DetailRead

这是我定义标志的方式(最小值具有最少的权限)

我有一个将用户 ID 连接到对象特定 ACE的权限表。这应该减少对特定行的并发更新的需要。 在此处输入图像描述

问题

  • 这是一个好主意吗?

  • 以前有人做过(比这更好)吗?(编辑:这是这里接受的答案

  • 如果这是实现权限的标准方式,它叫什么?

0 投票
4 回答
11900 浏览

c# - 将枚举标志附加到循环中的参数(按位附加)

在 C# 中,我试图将值“添加”到接受枚举标志的参数中。我可以使用按位运算符“|”在一行上执行此操作,但我似乎无法在循环中附加到参数。

我将以下枚举指定为标志。

现在,我可以轻松地使用以下代码向参数添加标志值:

但是,我想做的是从 CSV 字符串(来自 Web.Config)中获取保护选项列表,遍历它们并将它们添加到我的 myObj.ProtectionOptions 属性中。我不知道如何在不使用按位或“|”的情况下循环执行此操作 操作员。这是我想做的事情:

从概念上讲,这就是我想要的,但我不能将循环中的值“+=”传递给参数。

0 投票
6 回答
27254 浏览

c# - 枚举标志的模型绑定列表

我有一个枚举标志网格,其中每条记录都是一行复选框,以确定该记录的标志值。这是系统提供的通知列表,用户可以选择(对于每个通知)他们希望如何传递:

我找到了这篇文章,但他得到了一个标志值,并且他像这样将它绑定在控制器中(使用一周中的某一天的概念):

我找不到 MVC 3 模型绑定器可以处理标志的任何地方。谢谢!

0 投票
1 回答
1110 浏览

nhibernate - 通过枚举标志休眠 QueryOver

我有一个 QueryOver 的查询:

并且PersonEnumType是一个枚举标志:

这抛出Could not determine member from (Convert(x.PersonEnumType) & Convert(value(NHibernate.Repository.PersonRepositoryNh+<>c__DisplayClass2).type))

当然,这适用于 Nhibernate.Linq。

为什么?

0 投票
1 回答
3261 浏览

c# - 带有通用枚举的 HasFlag?

我刚从GenericsC# 开始,但很早就遇到了问题,我该如何调用.HasFlag()泛型Enum

如何将[Flags]属性添加到它?

0 投票
4 回答
2768 浏览

c# - 检查枚举标志的最佳实践

我注意到这两种检查枚举标志的模式:

在检查枚举标志的两种方法中,哪一种在性能、可读性、代码健康以及我应该考虑的任何其他方面更好?

谢谢,穆罕默德

0 投票
4 回答
202 浏览

c# - 可以将“全部”项目添加到标志枚举吗?

如果我有一个可以同时存在多个值的枚举,我会创建一个 Flags 枚举:

如果我现在想通过设置每个值的事实,我将不得不做这样的事情:

添加一个额外的元素All会被认为是不好的做法/有害/亵渎吗?

当有很多值并且将它们全部传递是一种常见情况时,这将节省一些空间和时间。

据我了解标志枚举(=位域)的机制,这应该有效。是否有我遗漏的任何副作用或其他原因您不应该这样做?

0 投票
4 回答
1887 浏览

java - 将标志传递给对象的正确设计模式

在C中我做过这种事情

我知道这是非常标准的,iostream例如它也被使用。我想知道如何将这种设计模式翻译成 Java 或 OOP?我确定多态不是这里的方法,因为我的代码有一个if(flag_is_set)块比重写大部分例程更好。是否有一个实用程序Flags类,或者使用配置对象、一个enum或一堆整数等来执行此操作的首选方式?

0 投票
1 回答
289 浏览

c# - 使用 LINQ 进行标记的枚举合并(组合的逆)

我正在尝试生成标记枚举的逆。下面是枚举:

我已经定义了一个静态MyType mtGroup1值为(A | B). 我想生成这个的倒数,不包括Unknown.

我的解决方案:

的结果值为,这tC | D | E | F期望的结果。这种方法有效,但我希望有一种更简单的方法来使用 LINQ 进行整合,如上所示(如果更简单,其他非 LINQ 方法也可以接受)。

谢谢!