.NET 8中使用開源驗證組件FluentValidation,驗證就這么簡單
FluentValidation簡介
FluentValidation 是 .NET 的開源驗證庫,它是使用 Fluent 接口的 .NET 驗證庫,以及可以lambda 表達式來構(gòu)建強類型驗證規(guī)則的 ,這樣可以讓開發(fā)人員以清晰簡潔的方式表達驗證邏輯,使其易于讀取、編寫和維護。在github有8.6k的Star,還是不錯的.NET開源組件。 github地址 :github.com/FluentValidation/FluentValidation 文檔地址 :docs.fluentvalidation.net在.NET 8中使用FluentValidation
FluentValidation更新也比較快,同步支持.NET 8。下面將介紹在.NET 8中使用步驟。
1、安裝 FluentValidation的NuGet 包
新建一個.NET 8控制臺項目,使用nuget包管理器搜索FluentValidation安裝或者用如下nuget控制臺命令安裝。
dotnet add package FluentValidation
2、新建一個客戶測試模型來做驗證
客戶測試模型有姓名,地址,郵編等,如下:
public class Customer{public string Name { get; set; }public string Address { get; set; }public string Postcode { get; set; }public int Discount { get; set; }public string Email { get; set; }public int age { get; set; }public bool disDiscount { get; set; }}
3、使用 FluentValidation來驗證
新建一個驗證類,繼承泛型接口AbstractValidator,并在這個類中寫驗證規(guī)則。代碼如下:
public class CustomerValidator : AbstractValidator<Customer>{public CustomerValidator(){RuleFor(x => x.Name).NotEmpty().WithMessage("姓名不能為空");//判斷為空//不允許等于0。該規(guī)則還包含一個條件,即只有當(dāng)disDiscount屬性為真時才生效。RuleFor(x => x.Discount).NotEqual(0).When(x => x.disDiscount);RuleFor(x => x.Address).Length(20, 250);//長度//自定義驗證RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("請輸入郵政編碼");//驗證郵箱RuleFor(x => x.Email).EmailAddress().WithMessage("請輸入正確的郵箱");}private bool BeAValidPostcode(string postcode){return true;// 自定義規(guī)則}}
4、調(diào)用規(guī)則
在main方法中模擬調(diào)用。
static void Main(string[] args){var customer = new Customer();customer.Name = "張山";customer.Email = "aaa";var validator = new CustomerValidator();// 驗證規(guī)則ValidationResult results = validator.Validate(customer);// 驗證結(jié)果是否通過bool success = results.IsValid;//返回當(dāng)前錯誤信息List<ValidationFailure> failures = results.Errors;}
上面是個調(diào)用的demo,需要驗證的話可以用results.IsValid來進行條件判斷,并寫驗證通過邏輯。
5、效果如下:

上面郵箱輸入錯誤,結(jié)果會返回false,并提示郵箱錯誤。這樣通過上面4步驟,一個簡單的客戶驗證就做好了。
結(jié)語
本文介紹了在.NET 8 中的 FluentValidation組件的步驟,FluentValidation 提供了一種干凈且富有表現(xiàn)力的方式來處理應(yīng)用程序中的驗證。上面的示例所示,使用 FluentValidation 可以將驗證邏輯與業(yè)務(wù)邏輯分開,從而增加代碼的維護性和可讀性。
希望本文對大家有所收獲,大家對開源的FluentValidation組件有什么看法,前端如果有驗證過程,后端還有必要驗證嗎?FluentValidation還有億元嗎?歡迎留言討論或吐槽。
關(guān)注公眾號↑↑↑:DotNet開發(fā)跳槽?
