探讨C#中的实体验证(Entity Validation)
2012-10-24 09:12
78 查看
探讨C#中的实体验证(Entity Validation)
环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0 一. 可能是最原始的验证代码 为了让问题尽量简单,我们就拿一个简单得不能再简单的User类开刀吧。 现在我们要在User类里面加一个方法用于验证User实例的合法性,相信很多人写过如下类似的代码: Check()方法很单纯的为User类的属性应用各种规则,然后返回非法的提示信息集。 验证的时候只是简单的调用一下实体的Check()方法即可: 好吧,我承认,一般情况下这个方法似乎够用了,只不过,很多人看到一连串的if可能会开始抓狂了,是呀,我也不喜欢,那就想个最即便的办法消除它们吧。 二. 基于C#3.0新特性的尝试 为了消除if,考虑把那些验证规则用一条线链起来,于是: 编写实体类的验证扩展方法如下: 那么实体的Check()方法相应改为: 这样,我们通过扩展方法,消除了if,但是我们把验证规则链了起来,并已异常的方式来抛出实体非法信息,那么每次验证只能得到一条验证信息,这显然往往不符合实际情况。想想.. 三. 继续演进 接上,为了得到验证错误信息集合,改进: 为了让代码看起来更像那么回事,给实体加个基类吧,就叫EntityBase了。 然后编写一个验证类: 然后看下修改后的Check()方法,这个验证类的作用就一目了然了: 不用解释吧?其实也是链起来,同时返回验证错误信息集合,看看结果: |
相关文章推荐
- c# 对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性。
- C#:实体类中做数据验证
- C# 实体model验证输出
- C#:实体类中做数据验证
- [CAMCOCO][C#]我的系统架构.服务器端.(四)----Model层 实体的自我验证
- C# 线程实践 - 验证测试
- [转]C# 邮箱验证激活
- .net C#使用私钥sign公钥验证 验证JWS signature data
- C#发送邮件验证账号
- C# C/S 图片验证码功能源码
- 京东价格监控软件开发技术探讨一:C#实现获取京东商品信息(价格、库存)
- C#验证输入的是否为数字类型的几种方法
- C#扫盲之:带你掌握C#的扩展方法、以及探讨扩展方法的本质、注意事项
- C#正则表达式验证是否日期
- C# [IPA]IOS In App Purchase(内购)验证(asp.net 版本)
- c# 正则验证 只能中文,英文,数字下划线,首个字符不能数字,6-20个字节
- C# 用 LDAP 验证用户名和密码
- C# HttpClient Cookie验证解决方法