在C#编程中玩转枚举,分享我的EnumHelper。

在C#编程中玩转枚举,分享我的EnumHelper。

在软件开发过程中,我们经常会为特定的场景下的特定数据定义逻辑意义。比如在用户表中,我们可能会有一个用户状态字段,该字段为整形。如果该字段的值为1则代表用户状态正常,2则代表用户被锁定等等。这些规则应该被写入开发文档里,但是每次都去查文档,也是一件痛苦的事情。其实,在C#中有一个很简单的方法可以实现数据和表象意义之间的转换。枚举既是为此而生。

例如,我们有一个用户状态的枚举,它看起来像这个样子:

枚举名称用于区分类型,枚举值用于程序判断,Description特性专为显示而生。多么美好的配合。

枚举除了用于定义和区分状态之外,也可以参与运算。基于枚举的位操作常常用于权限管理中。多个权限操作可以存储在同一个字段中,而不用在数据表中增加N多列,想想就觉得美好。一个常见的操作权限枚举定义如下:

如果我们要为用户设定添加和删除权限,只需要为用户的操作权限值设定为10即可(添加权限值为2,删除权限值为8,加起来值为10)。要验证用户是否包含某权限,只需要将该权限与用户拥有的权限值做位运算即可。

在程序圈里摸爬滚打这几年,也勉为其难的步入“三流程序员”的行列。封装一下吧,要对得起自己学过的面向对象。(三流指:封装、继承、多态。)

但是,做到这里还不够,我们还需要更多的东西来支持界面显示。用于应付在Web开发中常用数据展示和筛选需求。当然,WinForm也可以,只不过需要看官自己去实现。

为WebForm扩展,用于在Repeater控件中展示:

调用示例:(前提是你得在Web.config中引入相应的命名空间)

为DropDownList扩展绑定:

调用示例:

这些就是我工作以来在项目中使用枚举所带来的经验。这种做法大大的提高了编程的效率,可以让程序员更关注业务实现,而不必再为数据为0到底是什么意思扯皮。文中代码来自于真实项目,在你没有用错的情况下可以保证可用性。代码在很大程度上参考了X组件,再次对@大石头表示感谢。如果你感兴趣,可以来新生命团队做客。

呵呵,声明~
Favorite
◆◆0
 

最后编辑于:2014/6/12作者: Soar、毅

.NET 程序员,默默无闻的码农,一直希望行走的很文艺的苦逼青年.

原文地址:https://www.cnblogs.com/Leo_wl/p/4278204.html