Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะถูกต้อง DateofBirth โดยใช้การตรวจสอบอย่างคล่องแคล่วใน C # ได้อย่างไรหากเกินปีปัจจุบัน


ในการระบุกฎการตรวจสอบสำหรับคุณสมบัติเฉพาะ ให้เรียกใช้เมธอด RuleFor โดยส่งนิพจน์แลมบ์ดาที่ระบุคุณสมบัติที่คุณต้องการตรวจสอบ

RuleFor(p => p.DateOfBirth)

ในการเรียกใช้เครื่องมือตรวจสอบ ให้สร้างอินสแตนซ์อ็อบเจ็กต์เครื่องมือตรวจสอบและเรียกใช้เมธอด Validate ส่งผ่านอ็อบเจ็กต์เพื่อตรวจสอบ

ValidationResult results =validator.Validate(person);

วิธีการตรวจสอบจะส่งกลับวัตถุ ValidationResult ประกอบด้วยคุณสมบัติสองประการ

ถูกต้อง - บูลีนที่ระบุว่าการตรวจสอบสำเร็จหรือไม่

ข้อผิดพลาด - ชุดของอ็อบเจ็กต์ ValidationFailure ที่มีรายละเอียดเกี่ยวกับความล้มเหลวในการตรวจสอบความถูกต้อง

ตัวอย่างที่ 1

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

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

   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.DateOfBirth)
      .Must(BeAValidAge).WithMessage("Invalid {PropertyName}");
   }

   protected bool BeAValidAge(DateTime date){
      int currentYear = DateTime.Now.Year;
      int dobYear = date.Year;

      if (dobYear <= currentYear && dobYear > (currentYear - 120)){
         return true;
      }

      return false;
   }
}

ผลลัพธ์

Invalid Date Of Birth