Skip to content
vanthoainguyen edited this page Dec 4, 2011 · 2 revisions

NValidator is a lightweight extensible validation library for .NET that support fluent syntax. The implementation and fluent syntax are inspired from the well-known library Fluent Validation. However, I implemented it using Chain of Reponsibility pattern and made it fully support Dependency Injection for validator classes.

Here is a simple example that can help you to start:

public class UserValidator : TypeValidator<User>
{
    public UserValidator()
    {
        RuleFor(user => user.Id)
            .NotEmpty()
            .NotNull();

        RuleFor(user => user.UserName)
            .NotNull()
            .Length(6, 10)
            .Must(x => !x.Contains(" ")).WithMessage("@PropertyName cannot contain empty string.");

        RuleFor(user => user.Password)
            .StopOnFirstError()
            .NotEmpty()
            .Length(6, 20)
            .Must(x => x.Any(c => c >= 'a' && c <= 'z') &&
                       x.Any(c => c >= '0' && c <= '9') &&
                       x.Any(c => c >= 'A' && c <= 'Z')).WithMessage("@PropertyName must contain both letter and digit.");

        RuleFor(user => user.Title).In("MR", "MS", "MRS", "DR", "PROF", "REV", "OTHER");

        RuleFor(user => user.FirstName).NotEmpty();

        RuleFor(user => user.LastName).NotEmpty();
        
        RuleFor(user => user.Email).Email();

        RuleFor(user => user.Address).SetValidator<AddressValidator>()
                                     .When(x => x != null);
    }
}
Clone this wiki locally