国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實現一個對象驗證庫系列(請大神批評)--0)目錄以及庫結構介紹

2019-11-14 13:53:31
字體:
來源:轉載
供稿:網友

緣由

寫該系列緣由是因為之前在國慶無聊實現了一個對象驗證的小庫,

并希望博客園內的大神能批評教育一下我的這個庫,讓我能成長一些。

但是估計由于我沒有介紹庫的內容以及我的思路,只是給出了代碼,

大神們對此沒太大的興趣,

所以最近開始我會寫一個幾篇簡單介紹性文章的系列來闡述該庫的內容。

希望有幸能被大神們看見并給予我一些批評。

系列目錄

0) 目錄以及庫結構介紹

1) 接口介紹以及總體思路概述

2) 驗證器實現

3) Fluent以及擴展方法實現

 

本片正文 :庫結構介紹

(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) 接口介紹以及總體思路概述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 监利县| 威海市| 文安县| 独山县| 海林市| 商洛市| 霍城县| 宜丰县| 阿勒泰市| 扎囊县| 海门市| 中方县| 高陵县| 清水河县| 大关县| 乡宁县| 玉溪市| 新昌县| 客服| 江北区| 依安县| 梁河县| 阿尔山市| 石柱| 乐亭县| 乳山市| 云和县| 金沙县| 石家庄市| 黑河市| 扎兰屯市| 定襄县| 长顺县| 仪征市| 黄陵县| 滕州市| 怀集县| 大冶市| 江达县| 铜梁县| 临城县|