星空网 > 软件开发 > ASP.net

实现一个对象验证库系列 (请大神批评)

缘由

写该系列缘由是因为之前在国庆无聊实现了一个对象验证的小库,

并希望博客园内的大神能批评教育一下我的这个库,让我能成长一些。

但是估计由于我没有介绍库的内容以及我的思路,只是给出了代码,

大神们对此没太大的兴趣,

所以最近开始我会写一个几篇简单介绍性文章的系列来阐述该库的内容。

希望有幸能被大神们看见并给予我一些批评。

系列目录

0) 目录以及库结构介绍

1) 接口介绍以及总体思路概述

 

本片正文 :库结构介绍

(0)库介绍

本人是设想库的使用者可以用 Fluent 的方式创建对象的验证规则,

并且库由于不太涉及.net不同设备平台的特有代码,所以我是使用Portable 方式编写该库。

设想的库使用方式代码如下:

Container.Init(); // Only need init in your app once,目的是绑定类型与接口var builder = Validation.NewValidatorBuilder<Student>(); // 创建验证创建者b.RuleFor(i => i.Age)		.Must(i => i >= 0 && i <= 18)		.OverrideName("student age")		.OverrideError("not student")	.ThenRuleFor(i => i.Name)		.Must(i => !string.IsNullOrWhiteSpace(i))		.OverrideName("student name")		.OverrideError("no name");// 设置验证规则		var v = builder.Build(); // 利用创建者创建验证器var student = new Student() { Age = 13, Name = "v" }; // 验证对象数据var context = Validation.CreateContext(student); // 创建验证上下文,因为上下文中有执行相关的参数var result = v.Validate(context); // 使用验证器验证student数据Assert.IsNotNull(result);Assert.True(result.IsValid);Assert.True(result.Failures.Count == 0); // 验证结果的对比测试

(1)库代码结构介绍

 项目结构如下图:

实现一个对象验证库系列 (请大神批评)

UnitTest :单元测试代码 (这个不用介绍了吧)

ObjectValidater :库只有这一个项目

  • Base : 验证规则,规则创建者,规则选择器,验证器等实际实现代码
  • Checkers :各种验证方式的具体实现
  • Common :与库业务定义或者逻辑无关,提供便利地公用扩展方法或者类的实现
  • Entities :验证上下文,验证结果定义
  • Interfaces :各种接口的定义
  • Container 类:用于接口与实现类型绑定的解耦设置静态类
  • Syntax 类:提供Fluent使用方式的扩展方法定义
  • Validation 类:因为想将接口与实际实现解耦,所以不便于让用户自行 new 对象,只能提供创建的静态类

(2)项目依赖

目前该库只有一个依赖 Autofac,由于解耦接口和具体实现:

 <package id="Autofac" version="3.5.2" targetFramework="portable-net40+sl50+win80+wp80+wpa81" />

 

 

NEXT: 1) 接口介绍以及总体思路概述 




原标题:实现一个对象验证库系列 (请大神批评)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊副总裁丹尼尔将离职:https://www.kjdsnews.com/a/655389.html
上架三天就已卖爆!(圣诞包装纸切刀)美国外观专利防侵权预警!:https://www.kjdsnews.com/a/655390.html
挑战亚马逊,这几家平台与其“争霸”?:https://www.kjdsnews.com/a/655391.html
2021超详细Google Shopping营销指南:https://www.kjdsnews.com/a/655392.html
最新2021年末东南亚跨境电商基本面:https://www.kjdsnews.com/a/655393.html
大卖Q3财报放榜!有人收入过亿还是亏得一塌糊涂,问题出在哪儿?:https://www.kjdsnews.com/a/655394.html
TikTok斥资210万美元游说美国参议院阻止法案通过 :https://www.goluckyvip.com/news/188220.html
北京飞机票查询(快速查询北京至各地机票价格和航班信息):https://www.vstour.cn/a/366178.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流