【发布时间】:2014-05-01 22:11:42
【问题描述】:
我有一个Role 对象,它有几个标志枚举属性,每个相关对象都有一个。一个用户可以属于多个角色。我想获取角色集合并将其展平为单个表示并使用它来限制 UI 功能。如何展平集合?
这是我的 LINQPad 测试中的一些示例代码:
ICollection<Role> roles = new List<Role>();
roles.Add(new Role {
Name = "Administrator",
Object1Defaults = DefaultPermissions.Add | DefaultPermissions.Edit | DefaultPermissions.Remove,
Object2Defaults = DefaultPermissions.Add | DefaultPermissions.Edit | DefaultPermissions.Remove
});
roles.Add(new Role {
Name = "Manager",
Object1Defaults = DefaultPermissions.Add | DefaultPermissions.Edit,
Object2Defaults = DefaultPermissions.Add | DefaultPermissions.Edit
});
public class Role {
public string Name { get; set; }
public DefaultPermissions Object1Defaults { get; set; }
public DefaultPermissions Object2Defaults { get; set; }
}
[Flags]
public enum DefaultPermissions {
Add = 1 << 0,
Edit = 1 << 1,
Remove = 1 << 2
}
当然,我也愿意接受有关实现权限的更好方法的建议。我的计划是在Role 的数据库中为每个其他对象创建一个枚举,就像Object1Defaults 和Object2Defaults 一样,在每个视图中都可以使用,除了更好的名称和更多名称。
【问题讨论】:
标签: c# asp.net-mvc enums asp.net-mvc-5 asp.net-identity