Please post questions and issues on Github:

https://github.com/vanthoainguyen/NValidator/issues

 

 

 

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().WithMessage("Please specify the first name.");

            RuleFor(user => user.LastName)
                .NotEmpty().WithMessage("Please specify the last name.");
            
            RuleFor(user => user.Email)
                .Email();

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

The source code repository for this project is on GitHub. The NuGet package "NValidator" is also available.

Please checkout the document and other topics to get started.