Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 유창한 유효성 검사란 무엇이며 C#에서는 어떻게 사용합니까?

<시간/>

FluentValidation은 강력한 형식의 유효성 검사 규칙을 빌드하기 위한 .NET 라이브러리입니다. 유효성 검사 규칙을 작성하기 위해 유창한 인터페이스와 람다 식을 사용합니다. 도메인 코드를 정리하고 더 응집력 있게 만들 뿐만 아니라 유효성 검사 논리를 찾을 수 있는 단일 장소를 제공합니다.

유창한 유효성 검사를 사용하려면 아래 패키지를 설치해야 합니다.

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

예시 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);
   }
}

출력

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