States字段使用规范有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,States字段使用规范有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。解决方式States对应位域枚举States
千家信息网最后更新 2025年11月07日States字段使用规范有哪些
States字段使用规范有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
解决方式
States对应位域枚举StatesFlags。
////// 数据状态枚举 /// [Flags] [DataContract] [EnumDescription("状态")] public enum StatesFlags { ////// 可用状态 /// [XmlEnum("1")] [EnumDescription("可用")] [EnumMember] Enabled = 1, ////// 停用状态 /// [XmlEnum("2")] [EnumDescription("停用")] [EnumMember] Disabled = 1 << 1, ////// 移除(相当于逻辑删除) /// [XmlEnum("4")] [EnumDescription("移除")] [EnumMember] Removed = 1 << 2, ////// 已确认(已经审核通过) /// [XmlEnum("8")] [EnumDescription("已确认")] [EnumMember] Confirmed = 1 << 3, ////// 锁定 /// [XmlEnum("16")] [EnumDescription("锁定")] [EnumMember] Locked = 1 << 4, ////// 锁定登录 /// [XmlEnum("32")] [EnumDescription("锁定登录")] [EnumMember] LockLogin = 1 << 5 }
业务模型使用方式
在业务模型中,需要关注模型的特定状态集,写入新的状态时使用模型中的States, 读取时每一个状态独立提供读取实现。如下图中IsRemoved状态 以后大家一看代码就知道这个模型到底有几个状态
////// 状态集,写 /// public StatesFlags States { get; set; } ////// 只读 /// public bool IsRemoved => States.HasFlag(StatesFlags.Removed);
StatesFlags的4个扩展方法
////// 数据状态枚举 /// public static class StatesFlagsExtends { ////// 设置可用 /// /// 状态 public static StatesFlags SetEnable(this StatesFlags states) { if (states.HasFlag(StatesFlags.Disabled)) states = states ^ StatesFlags.Disabled; if (!states.HasFlag(StatesFlags.Enabled)) states = states | StatesFlags.Enabled; return states; } ////// 设置停用 /// /// 状态 public static StatesFlags SetDisable(this StatesFlags states) { if (states.HasFlag(StatesFlags.Enabled)) states = states ^ StatesFlags.Enabled; if (!states.HasFlag(StatesFlags.Disabled)) states = states | StatesFlags.Disabled; return states; } ////// 移除状态 /// /// 状态 /// 要移除的状态 public static StatesFlags RemoveState(this StatesFlags states, StatesFlags state) { //也可以通过如下计算去除一个状态states = states & ~StatesFlags.Disabled; return states ^ state; } ////// 附加状态 /// /// 状态 /// 要附加的状态 public static StatesFlags AttachState(this StatesFlags states, StatesFlags state) { return states | state; } }
由于Enable和Disable是互斥的,所以对应有SetDisable、SetEnable 。其它非互斥状态 提供 AttachState、RemoveState用于附加或移除状态。 如出现新的状态在StatesFlags中添加,状态为位域枚举,使用连续的数字移位操作,增加代码可读性。
附扩展方式测试代码
[TestClass] public class StatesFlagsTest { [TestMethod] public void TestStatesExtends() { //赋初值 在用、锁定、移除 var state = StatesFlags.Enabled | StatesFlags.Locked | StatesFlags.Removed; //调用SetDisable方法,设为停用 state = state.SetDisable(); Assert.IsTrue(!state.HasFlag(StatesFlags.Enabled)); Assert.IsTrue(state.HasFlag(StatesFlags.Disabled)); //调用SetEnable方法,设为在用 state = state.SetEnable(); Assert.IsTrue(state.HasFlag(StatesFlags.Enabled)); Assert.IsTrue(!state.HasFlag(StatesFlags.Disabled)); //调用RemoveState方法,移除状态 state = state.RemoveState(StatesFlags.Locked); Assert.IsTrue(!state.HasFlag(StatesFlags.Locked)); Assert.IsTrue(state.HasFlag(StatesFlags.Removed)); //调用AttachState方法,附加状态 state = state.AttachState(StatesFlags.Confirmed); Assert.IsTrue(state.HasFlag(StatesFlags.Confirmed)); //直接调用方法,不赋值不能改变states的值 state.AttachState(StatesFlags.Locked); Assert.IsTrue(!state.HasFlag(StatesFlags.Locked)); } }看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
状态
方法
模型
附加
代码
方式
业务
数据
帮助
登录
字段
清楚
内容
初值
可以通过
可读性
对此
数字
文章
新手
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
健值数据库目前应用最多的是
网络安全反恐怖宣传教育活动
快手人气软件开发
软件开发设计仕样书
如何提高数据库性能
数据库开发者版密钥
怎么把公式导入数据库
网络安全代理服务器用啥好
网吧游戏在云服务器
相亲数据库
求职吉安游戏软件开发
网络安全危机问题
网络安全讨论会个人发言
服务器业务系统防护
西部高级知识型人才数据库
高职计算机网络技术课程标准
网络技术 计算机软件
亿心杨网络技术公司
与网络安全相关的话题
华为服务器带网卡吗
网站服务器国外
网络技术有哪些重难点
怀旧服服务器纳克萨玛斯攻略
数据库能不能存储文件和图片
杀手6无法连接服务器如何解决
王者荣耀服务器时间封顶
数据库设计字典取值效率
论网络安全新技术
数据库子查询几种
关干网络安全句子