我有一種情況,我定義組織的安全角色。這些選擇是一組已知的枚舉默認值,以及任意數量的自定義角色的可能性。角色定義員工在組織中的權限。例如,用戶可以;類和枚舉功能的混合
public enum Role
{
Owner, Administrator, User, Guest;
}
但是,組織也可能希望自己的自定義角色(例如PowerUser)。我正在尋找最好的方法來聲明一個具有已知枚舉值列表(這是枚舉)的對象,但可以提供任意數量的自定義值(即一個類)。
天真的方法將是以下(添加自定義枚舉值):
public enum Role
{
Owner, Administrator, User, Guest, Custom;
public BaseRole asRole()
{
//switch statement returning the BaseRole depending on the enum value.
}
}
public class BaseRole
{
Set<Permission> permissions;
}
此選項的問題是,如果選擇了枚舉值定製的膠水代碼會變得非常冗長。由於包含所有可能的自定義角色的自定義值的行爲與其他值不同,因此接受角色的每個函數都需要特殊的粘合來處理自定義。
理想的情況下,這樣的事情很可能是最好的:
public enum Role
{
Owner, Administrator, User, Guest, Set<Custom>;
}
編輯:
參考,用戶類是
public class User
{
Set<Role> roles;
}
怎麼樣有'用戶'列''變量? –
libik
@libik,我想要選擇默認角色的一些類型安全,並且能夠在運行時定義其他角色。用戶確實有一個列表變量。 –
@libik更好'設置' –
polypiel