我们在写程序当中, 经常需要检验数据是否符合规则, 比如不能为空, 必需为Email或手机格式等.
于是, 在我们的代码中, 就会出现很多重复的诸如此类的校验代码.

然后我就想到, 用Attribute的方式, 为需要校验的对象属性加上规则, 再用统一的方法去获取并校验数据是否符合规则.

Attribute的定义如下:

FastDev介绍系列之[数据规则验证](上)using System;
FastDev介绍系列之[数据规则验证](上)
using System.Collections.Generic;
FastDev介绍系列之[数据规则验证](上)
using System.Linq;
FastDev介绍系列之[数据规则验证](上)
using System.Text;
FastDev介绍系列之[数据规则验证](上)
FastDev介绍系列之[数据规则验证](上)
namespace FastDev.Core


说明:
1.TargetName, 也就是待校验值的描述名称.如果只是一般的返回True或False(之后会继续提到其它的校验方式), 那么这个值可以不用.我们今天就不用.
2.CheckStrategy, 最重要的属性, Enum类型, 表示数据规则.暂时支持的只有:
   1)CheckStrategyType.NotNull.  不为Null.
   2)CheckStrategyType.NotNullOrEmpty.  不为Null,且如果为数组类型的话,数组长度也不以为0.
   3)CheckStrategyType.Regex.  正则规则.当使用这个时, 需指定ValidateType的值, Enum类型, 如ValidateType.Mail等, 表示要符合Email格式.
   4)CheckStrategyType.RegexCustom.  自定义正则规则.当CheckStrategyType.Regex无法满足需要时, 可使用此项. 自定义规则在StrategyParam属性中定义.
 3.说了这么多, 让我们来看看几个使用示例.

FastDev介绍系列之[数据规则验证](上)using System;
FastDev介绍系列之[数据规则验证](上)
using System.Text;
FastDev介绍系列之[数据规则验证](上)
using System.Collections.Generic;
FastDev介绍系列之[数据规则验证](上)
using System.Linq;
FastDev介绍系列之[数据规则验证](上)
using Microsoft.VisualStudio.TestTools.UnitTesting;
FastDev介绍系列之[数据规则验证](上)
using FastDev.Core.Exception;
FastDev介绍系列之[数据规则验证](上)
using System.Text.RegularExpressions;
FastDev介绍系列之[数据规则验证](上)
FastDev介绍系列之[数据规则验证](上)
namespace FastDev.Core.Test


好了,今天先介绍到这.其它的使用之后再继续介绍.
这是FastDev.Core程序集中的功能.规则定义不支持继承和Interface, 下个版本打算实现这个功能.
说到这里, 顺带说一下, 将Model层使用接口表示的好处.一是可以在ORM的Entity和普通ADO.NET的Entity中相互替换.前期可以用ORM快速开发,后期可以换ADO.NET提升性能.跟把数据访问层用接口表示来实现底层数据库类型替换是一个道理.二是可以只在一个地方定义业务数据规则,多种Model都可以适用, 这也是我开发这个的一大目的.
源代码下载: FastDev.Core.rar

相关文章:

  • 2021-10-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-17
猜你喜欢
  • 2021-11-14
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案