我正在研究一個必須管理權限的應用程序,並且我想出了一個我想要的反饋意見。我不確定這是不是正確的地方發佈它,但我想我們會看到。將枚舉綁定到靜態數據
我的應用程序中的用戶可以被分配權限。他們可以擁有個人級別的權限,也可以擁有羣組成員的權限。因此,我有如下表(我想的名字是相對不言自明的,但如果需要,可以添加更多的信息):
- 用戶
- 權限
- 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