共享属性和方法之间的角色属性的初始化

我有一个权限属性,它获取角色的枚举值列表:

[CheckRoles(SystemRole.ID.Admin, SystemRole.ID.User)] public class MyController : Controller { .... } 

但是,在代码的其他部分,我想检查用户是否处于任何这些角色,因此我可以转到正确的页面。 所以代码看起来像:

 if (roles.IsInAnyRoles(user, SystemRole.ID.Admin, SystemRole.ID.User) { ... Do something in MyController ... } 

你可以在这里看到重复。 我真的希望在变量或初始化列表中有两个角色,或者我可以传递给属性和方法。 创建const数组不起作用。 有办法做到这一点吗? 我可以以某种方式存储arrays初始化器吗?

任何帮助将不胜感激!

UPDATE

我已经将角色枚举成了一个Flags枚举(并给出了适当值的项)。 这意味着我可以将值或值一起给出单个恒定值。 我现在可以在Attribute和方法中使用该常量值。 感谢下面的Danny Chen。

在我的实际项目经验中,我想定义这样的角色;

 [Flags] public enum Role { Staff = 0, Supervisor = 1, Manager = 2, Admin = 4, HelpDesk = 8 } 

原因是一个帐户通常有一些相关的角色,例如某人是Bob的主管,他也是IT部门的经理。 在这种情况下,他的角色是Role.Supervisor | Role.Manager Role.Supervisor | Role.Manager ,以便他可以使用提供给Role.Supervisor的所有function(例如批准Bob的离开请求),同时他可以批准离开所有IT部门员工的请求。 该动作如下:

 [CheckRole(Role.Supervisor, Role.Manager)] public ActionResult ApproveLeavingRequest() { //the roles in the constructor of CheckRoleAttribute are OR related } [CheckRole(Role.Manager|Role.Supervisor, Role.Admin)] public ActionRequest ModifySystemSettings() { //this method is provided to a small group of people //those who is a manager and a supervisor //or he is an admin } [CheckRole(Role.Manager|Role.Supervisor|Role.Admin)] //maybe we need to add Role.Boss into the system :) public ActionRequest IncreasePay() { //only the boss account can invoke this method } 

希望这可以帮助。