Class ValidationResult<T>

Namespace
REslava.Result
Assembly
REslava.Result.dll

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

T

The type of the value being validated.

Inheritance
ValidationResult<T>
Implements
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

true if 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

error IReason

The 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

errors IReason[]

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

error string

The 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

value T

The 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

value T

The value that passed validation.

successes Success[]

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