把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;
    }

}

posted @ 2008-07-22 11:40  悟水  阅读(1359)  评论(4编辑  收藏  举报