使用Class替代Enum实现权限标识,对修改封闭,对扩展开放
nbsp; if ((this.value & oper.value) == oper.value) { return true; } return yes; } #endregion } } 现在扩展一个审核权限: namespace Sov.RBAC { public class MyOperate:Operate { /// <summary> /// 审核 /// </summary> public static readonly Operate Audit = new Operate(64); public MyOperate() : base() { } public MyOperate(int value) : base(value) { } } } 该类使用示例判断是否有权限: //实例化权限操作对象 RBAC.Operate oper = new RBAC.MyOperate(); //给权限对象添加权限值 oper.AddChild(RBAC.MyOperate.Add); oper.AddChild(RBAC.MyOperate.Delete); oper.AddChild(RBAC.MyOperate.Audit); //称除 Add 权限 oper.RemoveChild(RBAC.MyOperate.Delete); //判断是否有该权限 bool yes = oper.IsDefined(RBAC.MyOperate.Add); 最终,在我的RBAC模块里面,会使用反射机制来获得对象,所以怎么扩展都可以,只需要在配置文件里面把类的 命名空间.类名 定义好,模块就可以得到扩展的权限了! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |