1. Getting started
hugoj0s3 edited this page Apr 23, 2018
·
6 revisions
Lite and simple validation library based on composition. It aims to simplify the composition and reuse of validations logics. You create single and simple validations, and then you add those validations to validate an entire model.
ICompositeValidation<Person> Validation = new CompositeValidation<Person>()
.NotNull(nameof(Person.FirstName), x => x.FirstName)
.MinimumLength(nameof(Person.FirstName), x => x.FirstName, 3)
.MaximumLength(nameof(Person.FirstName), x => x.FirstName, 10)
.Email(nameof(Person.Email), x => x.Email)
.RegEx(nameof(Person.Phone), x => x.Phone, @"^[0-9\-\+]{9,15}$")
.MustNot(nameof(Person.BirthDate), x => x.BirthDate, x => x.Year < 1850)
.Must(nameof(Person.BirthDate), x => x.BirthDate, x => x < DateTime.Now)
.Add(new CustomValidation(nameof(Person)), x => x);
if (!Validation.Update(person).IsValid)
{
IReadOnlyCollection<Failure> failures = Validation.Failures;
}
public class CustomValidation : Validation<Person>
{
private const string DefaultValidationMessage
= "{0} - Person under 16 can not have drive license";
public CustomValidation(
string groupName,
Person target = default(Person),
string formatMessage = DefaultValidationMessage,
int severity = 1)
: base(groupName, target, formatMessage, severity)
{
}
protected override IList<Failure> Validate()
{
var failures = new List<Failure>();
if (Target.HasDriverLicense && Target.Age < 16)
{
failures.Add(new Failure(this));
}
return failures;
}
}
- 1. Getting started
-
2. Compositing validations
- 2.1. Null and NotNull validations
- 2.2. Must and MustNot validations
- 2.3. Regular expression validations
- 2.4. Not empty string validations
- 2.5. String maximum and minimum Length validations
- 2.6. Email validations
- 2.7. Not empty collections
- 2.8. Minimum and Maximum size collections
- 2.9. Adding a custom validation
- 3. Updating failure list
- 4. Creating custom validations
- 5. Summary Message