C# Enum 简易权限设计 使用FlagsAttribute属性
2015-09-11 11:42
846 查看
C#Enum简易权限设计使用FlagsAttribute属性
基本权限设计:///<summary>
[code]///权限列举
///</summary>
[FlagsAttribute]
publicenumPermissions
{
[Description("未设定")]
None=0,
[Description("建立")]
Create=1,
[Description("读取")]
Read=2,
[Description("更新")]
Update=4,
[Description("刪除")]
Delete=8,
[Description("所有功能")]
All=Create|Read|Update|Delete
}
[/code]
技巧一:利用2的次方值,來作為列舉值以便日後做位元運算(&AND、|OR、^XOR)。
技巧二:現有權限中,加入新權限動作。(OR運算)
Permissionspermission=Permissions.None;
[code]permission=permission|Permissions.Create;
MessageBox.Show(permission.ToString());
//Result:Create
[/code]
技巧三:加入【FlagsAttribute】標籤
Permissionspermission=Permissions.None;
[code]permission=permission|Permissions.Create;
MessageBox.Show(permission.ToString());
//Result:Create([FlagsAttribute]不影響結果)
permission=permission|Permissions.Read;
MessageBox.Show(permission.ToString());
//Result:3(未加入[FlagsAttribute])
//Result:Create,Read(加入[FlagsAttribute])
[/code]
技巧四:現有權限中,移除某個權限動作。(XOR與AND運算應用)
Permissionspermission=Permissions.None;
[code]permission=permission|Permissions.Create;
MessageBox.Show(permission.ToString());
//Result:Create
permission=permission|Permissions.Read;
permission=permission|Permissions.Update;
MessageBox.Show(permission.ToString());
//Result:Create,Read,Update
permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(permission.ToString());
//Result:Create,Update
[/code]
技巧五:判斷現在權限中,是否擁有某個權限(AND運算)
Permissionspermission=Permissions.None;
[code]permission=permission|Permissions.Create;
MessageBox.Show(permission.ToString());
//Result:Create
permission=permission|Permissions.Read;
permission=permission|Permissions.Update;
MessageBox.Show(permission.ToString());
//Result:Create,Read,Update
permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(permission.ToString());
//Result:Create,Update
boolIsCreatable=false;
if((permission&Permissions.Create)==Permissions.Create)
{
IsCreatable=true;
}
else
{
IsCreatable=false;
}
MessageBox.Show(IsCreatable.ToString());
//Result:True
[/code]
簡易權限類別設計:
[code]
[/code]
簡易權限類別使用:
[code]
[/code]
from:http://www.dotblogs.com.tw/chhuang/archive/2008/04/26/3514.aspx
相关文章推荐