我正在研究一个必须管理权限的应用程序,并且我想出了一个我想要的反馈意见。我不确定这是不是正确的地方发布它,但我想我们会看到。将枚举绑定到静态数据
我的应用程序中的用户可以被分配权限。他们可以拥有个人级别的权限,也可以拥有群组成员的权限。因此,我有如下表(我想的名字是相对不言自明的,但如果需要,可以添加更多的信息):
- 用户
- 权限
- User_Permissions
- 组
- User_Groups
- User_Group_Permissions
The design of权限表是这样的:
- ID INT(许可ID,主键)
- 名称VARCHAR(255)(许可的名称,如 “管理”)
- 描述VARCHAR(1000)(许可的简短说明)
- DEFAULT_VALUE TINYINT(默认值分配给用户(是/否/不))
然而,当我检查代码中的权限,我不想使用“魔术字符串”,所以我创建了一个枚举在我的权限表的权限,然后使用它像这样:
public enum EPermission
{
ADMINISTRATION = 1,
LOGIN = 2
}
public bool HasPermission(EPermission permission)
{
int permission_id = (int)permission;
//look up the permission in the database based on permission_id
}
在我的权限表中的编号相符,我在我的枚举分配数值。该应用程序无法改变这些。权限表中的权限作为安装的一部分使用这些ID插入,不应更改。
这种连接可以接受吗?我不希望数据发生变化,但它总是可能的,而且我只是想知道在我深入研究之前是否有更好的方法来做事。
有趣 - 没有想到反思的想法。它只会被部署一次(或者至少在一个地方),所以也许这对我的情况有点过分,但是谢谢。 – Mansfield