流利的驗證元件 FluentValidation

2021-09-21 20:38:04 字數 1239 閱讀 3664

進入今天的主題首先如果你還沒有這款元件,你可以利用vs2010的nuget安裝,(如果不會的請安裝上篇開源database元件:fluentmigrator中提到的方式安裝),命令為:

現在我們可以開始體驗了,實體類do任然是上節的orders:

do:public  class  orders 

public string customerid

public decimal discount

public datetime orderdate  

}驗證邏輯:

public  class  ordersvalidator:abstractvalidator }

看見這樣的**你的感覺如何?現在式的語言講究的不僅在於功能,還有語義。

下面我們來寫個簡單的測試類測試它:

[testmethod] 

public void testmethod1() 

; ivalidator validator = new ordersvalidator(); 

var results = validator.validate(orders);

var validationsucceeded = results.isvalid; 

var failures = results.errors; 

assert.istrue(failures.any(t => t.propertyname == "customerid")); 

assert.istrue(failures.any(t => t.propertyname == "discount")); 

assert.istrue(failures.any(t => t.propertyname == "orderdate.date")); 

failures.tolist().foreach(t=>debug.writeline(t.errormessage)); 

}結果:

單元測試結果就不貼了,覺得多餘。

最後忘說了這款元件為我們提供了很多語言的多語言支援:

我在思考對於架構設計中我們採用的驗證元件可以任意切換,我們完全可以為vab,fluentvalidation同一抽象介面做個門面模式。在借助於ioc插入式架構,利用不同的key,獲取驗證元件介面,而這個key值我將會處理在方法的attribute上,aop方式橫切於我們的應用程式,驗證本來就是個業務功能元件,橫切點。我也是正在如此引用我的架構。

form元件的驗證

django 的form元件可以實現自定義的驗證規則。建立基於form的類,在類中建立字段,定義規則。建立該類的物件,並將待驗證的資料傳入,使用is valid 函式。is valid 函式的原始碼實現是 通過full clean 函式挖出存在的errors並返回,如果沒錯誤,則返回true。校驗多...

entlib驗證元件

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using microsoft.practices.enterpriselib...

流暢的驗證元件 FluentValidation

進入今天的主題首先如果你還沒有這款元件,你可以利用vs2010的nuget安裝,如果不會的請安裝上篇開源database元件 fluentmigrator中提到的方式安裝 命令為 現在我們可以開始體驗了,實體類do任然是上節的orders do public class orders public ...