Class ValidationResult<T>
Represents the result of a validation operation with a value of type T. Inherits from Result<T> and provides validation-specific convenience methods.
public class ValidationResult<T> : Result<T>, IResultBase<T>, IResultBase
Type Parameters
TThe type of the value being validated.
- Inheritance
-
Result<T>ValidationResult<T>
- Implements
-
IResultBase<T>
- Inherited Members
- Extension Methods
Examples
// Create a successful validation result
var result = ValidationResult<User>.Success(user, new Success("User is valid"));
// Create a failed validation result
var result = ValidationResult<User>.Failure("Email is required");
// Check validation status
if (result.IsValid)
{
Console.WriteLine($"Validation passed: {result.Value}");
}
else
{
Console.WriteLine($"Validation failed: {string.Join(", ", result.ValidationErrors)}");
}
Properties
IsValid
Gets a value indicating whether the validation was successful. This is a convenience property that returns the opposite of IsFailure.
public bool IsValid { get; }
Property Value
- bool
trueif the validation passed; otherwise,false.
Examples
var result = ValidateUser(user);
if (result.IsValid)
{
Console.WriteLine("User is valid");
// Access validated value
var validUser = result.Value;
}
else
{
Console.WriteLine($"User validation failed: {result.ValidationErrors.Count} errors");
}
ValidationErrors
Gets the validation errors that caused the validation to fail. This is a convenience property that filters the Reasons to only include errors.
public IReadOnlyList<IReason> ValidationErrors { get; }
Property Value
- IReadOnlyList<IReason>
A read-only list of validation errors. Empty if validation passed.
Examples
var result = ValidateUser(user);
if (!result.IsValid)
{
foreach (var error in result.ValidationErrors)
{
Console.WriteLine($"Error: {error.Message}");
// Access error context if available
if (error.Tags?.Any() == true)
{
Console.WriteLine($"Context: {string.Join(", ", error.Tags)}");
}
}
}
Methods
Failure(IReason)
Creates a failed validation result with a specific error reason.
public static ValidationResult<T> Failure(IReason error)
Parameters
errorIReasonThe error reason describing why validation failed.
Returns
- ValidationResult<T>
A failed ValidationResult<T>.
Examples
var error = new ValidationError("Email", "Invalid email format")
.WithTag("Field", "Email")
.WithTag("Value", "invalid-email");
var result = ValidationResult<User>.Failure(error);
// result.IsValid == false
// result.ValidationErrors contains the ValidationError with rich context
Failure(params IReason[])
Creates a failed validation result with multiple error reasons.
public static ValidationResult<T> Failure(params IReason[] errors)
Parameters
errorsIReason[]The error reasons describing why validation failed.
Returns
- ValidationResult<T>
A failed ValidationResult<T>.
Examples
var errors = new IReason[]
{
new ValidationError("Email", "Email is required"),
new ValidationError("Age", "Must be 18 or older"),
new ValidationError("Password", "Password too short")
};
var result = ValidationResult<User>.Failure(errors);
// result.IsValid == false
// result.ValidationErrors contains all three validation errors
// Each error can have its own context and tags
Failure(string)
Creates a failed validation result with a simple error message.
public static ValidationResult<T> Failure(string error)
Parameters
errorstringThe error message describing why validation failed.
Returns
- ValidationResult<T>
A failed ValidationResult<T>.
Examples
var result = ValidationResult<User>.Failure("Email is required");
// result.IsValid == false
// result.ValidationErrors contains one Error with message "Email is required"
Success(T)
Creates a successful validation result with the specified value and no success reasons.
public static ValidationResult<T> Success(T value)
Parameters
valueTThe value that passed validation.
Returns
- ValidationResult<T>
A successful ValidationResult<T>.
Examples
var user = new User("test@example.com", 25);
var result = ValidationResult<User>.Success(user);
// result.IsValid == true
// result.Value == user
// result.Successes is empty
Success(T, params Success[])
Creates a successful validation result with the specified value and optional success reasons.
public static ValidationResult<T> Success(T value, params Success[] successes)
Parameters
valueTThe value that passed validation.
successesSuccess[]Optional success reasons describing what was validated.
Returns
- ValidationResult<T>
A successful ValidationResult<T>.
Examples
var user = new User("test@example.com", 25);
var result = ValidationResult<User>.Success(user,
new Success("Email format is valid"),
new Success("Age meets requirements"));
// result.IsValid == true
// result.Value == user
// result.Successes contains the success reasons