Computer >> Máy Tính >  >> Lập trình >> C#

Sử dụng Xác thực thông thạo trong C # là gì và làm thế nào để sử dụng trong C #?

FluentValidation là một thư viện .NET để xây dựng các quy tắc xác thực được đánh máy mạnh. Nó Sử dụng một giao diện thông thạo và các biểu thức lambda để xây dựng các quy tắc xác thực. Nó giúp làm sạch mã miền của bạn và làm cho nó gắn kết hơn, cũng như cung cấp cho bạn một nơi duy nhất để tìm kiếm logic xác thực

Để sử dụng xác thực thông thạo, chúng tôi phải cài đặt gói bên dưới

<PackageReference Include="FluentValidation" Version="9.2.2" />

Ví dụ 1

static class Program {
   static void Main (string[] args) {
      List errors = new List();

      PersonModel person = new PersonModel();
      person.FirstName = "";
      person.LastName = "S";
      person.AccountBalance = 100;
      person.DateOfBirth = DateTime.Now.Date;

      PersonValidator validator = new PersonValidator();
      ValidationResult results = validator.Validate(person);

      if (results.IsValid == false) {
         foreach (ValidationFailure failure in results.Errors) {
            errors.Add(failure.ErrorMessage);
         }
      }
      foreach (var item in errors) {
         Console.WriteLine(item);
      }
      Console.ReadLine ();
   }
}

public class PersonModel {
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public decimal AccountBalance { get; set; }
   public DateTime DateOfBirth { get; set; }
}

public class PersonValidator : AbstractValidator {
   public PersonValidator(){
      RuleFor(p => p.FirstName)
      .Cascade(CascadeMode.StopOnFirstFailure)
      .NotEmpty().WithMessage("{PropertyName} is Empty")
      .Length(2, 50).WithMessage("Length ({TotalLength}) of {PropertyName} Invalid")
      .Must(BeAValidName).WithMessage("{PropertyName} Contains Invalid Characters");

      RuleFor(p => p.LastName)
      .Cascade(CascadeMode.StopOnFirstFailure)
      .NotEmpty().WithMessage("{PropertyName} is Empty")
      .Length(2, 50).WithMessage("Length ({TotalLength}) of {PropertyName} Invalid")
      .Must(BeAValidName).WithMessage("{PropertyName} Contains Invalid Characters");

   }

   protected bool BeAValidName(string name) {
      name = name.Replace(" ", "");
      name = name.Replace("-", "");
      return name.All(Char.IsLetter);
   }
}

Đầu ra

First Name is Empty
Length (1) of Last Name Invalid