進入今天的主題首先如果你還沒有這款元件,你可以利用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 ...