Built-in validators
MADE.Data.Validation ships with over 30 validators covering the most common validation scenarios. Each validator implements IValidator and can be used independently or composed into a ValidatorCollection.
Every validator exposes the same properties:
| Property | Description |
|---|---|
Key |
A string identifier for the validator (defaults to the class name). |
IsInvalid |
true if the last validation failed. |
IsDirty |
true if Validate has been called at least once. |
FeedbackMessage |
A human-readable error message. Customizable via the property setter. |
String validators
RequiredValidator
Ensures a value is not null, not an empty string, not whitespace, not an empty collection, and not false:
var validator = new RequiredValidator();
validator.Validate(null); // IsInvalid = true
validator.Validate(""); // IsInvalid = true
validator.Validate(" "); // IsInvalid = true
validator.Validate("hello"); // IsInvalid = false
AlphaValidator
Checks that a string contains only letter characters (a-z, case-insensitive):
var validator = new AlphaValidator();
validator.Validate("Hello"); // IsInvalid = false
validator.Validate("Hello123"); // IsInvalid = true
AlphaNumericValidator
Checks that a string contains only letters and numbers:
var validator = new AlphaNumericValidator();
validator.Validate("Hello123"); // IsInvalid = false
validator.Validate("Hello!"); // IsInvalid = true
MinLengthValidator
Validates that a string meets a minimum length:
var validator = new MinLengthValidator { MinLength = 3 };
validator.Validate("Hi"); // IsInvalid = true
validator.Validate("Hello"); // IsInvalid = false
MaxLengthValidator
Validates that a string doesn't exceed a maximum length:
var validator = new MaxLengthValidator { MaxLength = 10 };
validator.Validate("Hello"); // IsInvalid = false
validator.Validate("Hello, World!"); // IsInvalid = true
RegexValidator
Validates a value against a configurable regular expression:
var validator = new RegexValidator { Pattern = @"^\d{3}-\d{4}$" };
validator.Validate("123-4567"); // IsInvalid = false
validator.Validate("abc"); // IsInvalid = true
Base64Validator
Checks whether a string is valid Base64:
var validator = new Base64Validator();
validator.Validate("SGVsbG8="); // IsInvalid = false
validator.Validate("not base64!"); // IsInvalid = true
Format validators
EmailValidator
Validates that a string is a valid email address. Extends RegexValidator with a comprehensive email pattern:
var validator = new EmailValidator();
validator.Validate("user@example.com"); // IsInvalid = false
validator.Validate("not-an-email"); // IsInvalid = true
IpAddressValidator
Validates that a value is a valid IPv4 address:
var validator = new IpAddressValidator();
validator.Validate("192.168.1.1"); // IsInvalid = false
validator.Validate("999.999.999.999"); // IsInvalid = true
MacAddressValidator
Validates that a value is a valid MAC address using .NET's PhysicalAddress.Parse:
var validator = new MacAddressValidator();
validator.Validate("00:1A:2B:3C:4D:5E"); // IsInvalid = false
GuidValidator
Checks whether a string is a valid GUID:
var validator = new GuidValidator();
validator.Validate("550e8400-e29b-41d4-a716-446655440000"); // IsInvalid = false
validator.Validate("not-a-guid"); // IsInvalid = true
WellFormedUrlValidator
Validates that a string is a well-formed URL:
var validator = new WellFormedUrlValidator();
validator.Validate("https://example.com"); // IsInvalid = false
validator.Validate("not a url"); // IsInvalid = true
Range validators
BetweenValidator
Validates that an IComparable value falls within a range:
var validator = new BetweenValidator { Min = 1, Max = 100, Inclusive = true };
validator.Validate(50); // IsInvalid = false
validator.Validate(0); // IsInvalid = true
validator.Validate(100); // IsInvalid = false (inclusive)
MinValueValidator
Validates that a value is greater than a minimum:
var validator = new MinValueValidator { Min = 0 };
validator.Validate(5); // IsInvalid = false
validator.Validate(-1); // IsInvalid = true
MaxValueValidator
Validates that a value is less than a maximum:
var validator = new MaxValueValidator { Max = 100 };
validator.Validate(50); // IsInvalid = false
validator.Validate(150); // IsInvalid = true
LatitudeValidator
Validates that a value is within the valid latitude range (-90 to 90):
var validator = new LatitudeValidator();
validator.Validate(51.5074); // IsInvalid = false (London)
validator.Validate(95.0); // IsInvalid = true
LongitudeValidator
Validates that a value is within the valid longitude range (-180 to 180):
var validator = new LongitudeValidator();
validator.Validate(-0.1278); // IsInvalid = false (London)
validator.Validate(200.0); // IsInvalid = true
Custom predicate validation
PredicateValidator
Validates using a custom function, useful for one-off validation logic:
var validator = new PredicateValidator<string>
{
Predicate = value => value?.Contains("@") == true,
FeedbackMessage = "Value must contain @",
};
validator.Validate("test@example"); // IsInvalid = false
validator.Validate("test"); // IsInvalid = true