国产探花免费观看_亚洲丰满少妇自慰呻吟_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) 接口介紹以及總體思路概述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 运城市| 石屏县| 海林市| 富蕴县| 周口市| 南阳市| 宁德市| 武冈市| 阿瓦提县| 通榆县| 海丰县| 新田县| 岳普湖县| 盐池县| 靖州| 呈贡县| 衡东县| 临西县| 晋城| 象州县| 樟树市| 正定县| 琼中| 寻乌县| 屏山县| 二手房| 合水县| 新泰市| 望谟县| 九龙城区| 温州市| 利辛县| 邵阳县| 镇平县| 札达县| 临湘市| 白河县| 泊头市| 金湖县| 永顺县| 碌曲县|