把C语言中最简单有效的权限管理搬到C#里去
在日常的应用中,我们常常会遇到权限控制的问题,居然也有些人提出了全面的,依托数据库的权限方案,其字段及其相关联的程度,让人生畏,并且,速度也不会理想。 在C里,我们要控制一些复杂度不是很大的权限问题时,定义一个宏,一句话就实现了 我们把C里的这种思想搬过来,封装成C#类,试试看 :)原理: 控制一个整数的二进制的每一位,当它为1时,我们认为他拥有权限,当为0时,认为他无权限,就这么简单
注意:这不是什么创新
废话不多说,直接上代码
public enum Permission
{
新建 = 1,
删除 = 2,
修改 = 4,
保留权限1 = 8,
保留权限2 = 16,
保留权限3 = 32,
保留权限4 = 64,
保留权限5 = 128
}
public class PSolution
{
/**//// <summary>
/// 原始权限
/// </summary>
int pNum;
public int PNum
{
get { return pNum; }
set { pNum = value; }
}
public PSolution(int a)
{
if (a < 0 || a > 255)
{
throw new ArgumentException("参数值必须大于0且小于255");
}
pNum = a;
}
/**//// <summary>
/// 清除指定的权限
/// </summary>
public void cleanBit(Permission p)
{
pNum &= ~((int)p);
}
/**//// <summary>
/// 设置指定的权限
/// </summary>
public void setBit(Permission p)
{
pNum |= ((int)p);
}
/**//// <summary>
/// 检查是否拥有指定的权限
/// </summary>
public bool checkBit(Permission p)
{
int bTemp = pNum >> Convert.ToInt16(System.Math.Log((double)p,2d));
if ((bTemp & 0x01) == 1)
return true;
return false;
}
}
页:
[1]