FluentValidation adından da anlaşılacağı gibi bir validation çözümüdür. Open source olan geliştirildiği söylenen ancak benim henüz kaynak kodlarına erişemediğim sadece elimde bir dll i olan bir proje. Eğer kullandığınız classınızın çok fazla properytsi varsa bunları yönetmekte zorluk cekiyorsanız tam size göre bir çözüm. Bu cümlede TVlerde sabaha karsı satılan ürünlerin reklamları gibi oldu. Yarım saat içinde ararsanız buda bedava.....:) herneyse konuyu dağıtmadan Temel anlamda sizin propertylerinizin valuelerini kontrol eden bir mimari.
Kullanımı çok basit ve sadece kendisinden beklenei yerine getiriyor. Projeye buradan erişebilirsiniz.
Basit bir sınıf tasarlayalım.
public class Users
{
public int UserId { get; set; }
public string NameSurname { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
Şimdi validate için bir sınıf yazalım.
public class UserValidator:FluentValidation.AbstractValidator<Users>
{
public UserValidator()
{
RuleFor(user => user.UserName).NotNull().NotEqual("admin").Length(1,100);
RuleFor(user => user.UserId).NotEmpty().NotNull().GreaterThan(1);
}
}
Kullanımı ise:
Users _user = new Users();
_user.UserName = "admin";
UserValidator _validator = new UserValidator();
ValidationResult result = _validator.Validate(_user);
if (result.IsValid)
{
//hersey yolunda
}
else
{
foreach (var failure in result.Errors)
{
Console.WriteLine(failure.PropertyName + " failure");
Console.ReadLine();
}
}
Projenin dökümantasyonunda sizi tatmin edecek metotlar var. Regular expression için Matches() metodu, Çok kullanılan email kontrolu için ise hazır bir Email validatoru var. Bu metodun finans sektörü gibi çok fazla propertysi olan sektörlerde hayat kurtarıcı bir özelliğe sahip olacağını düşünüyorum. Projeyi modulerleştirmek ve validation işlemlerini belki bir katmana atamak isterseniz de WithMessage("mesaj") kullanılarak gerekli response verilebilir. Bu sayede gelen cevabı kontrol etmeye gerek kalmaz, araya business katmanının girmemiş olur.
Tags: Fluentvalidation