Table of Contents

Class ValidationError

Namespace
FunctionalDdd
Assembly
FunctionalDdd.RailwayOrientedProgramming.dll

Represents validation errors for one or more fields. Used when input data fails business rules or constraints.

public sealed class ValidationError : Error, IEquatable<Error>, IEquatable<ValidationError>
Inheritance
ValidationError
Implements
Inherited Members
Extension Methods

Examples

// Single field validation
var error = Error.Validation("Email is required", "email");

// Multiple field validation using fluent API
var multiError = ValidationError.For("email", "Email is required")
    .And("password", "Password must be at least 8 characters")
    .And("age", "Age must be 18 or older");

// Multiple errors for same field
var complexError = ValidationError.For("password", "Must be at least 8 characters")
    .And("password", "Must contain a number")
    .And("password", "Must contain a special character");

Remarks

ValidationError can hold errors for multiple fields, making it ideal for form validation scenarios. Use the fluent And(string, string) method to add multiple field errors.

Maps to HTTP 400 Bad Request when converted to HTTP responses.

Constructors

ValidationError(IEnumerable<FieldError>, string, string, string?)

Creates a validation error with multiple field errors.

public ValidationError(IEnumerable<ValidationError.FieldError> fieldErrors, string code, string detail = "", string? instance = null)

Parameters

fieldErrors IEnumerable<ValidationError.FieldError>

Collection of field-specific errors.

code string

Machine-readable error code.

detail string

Overall error description.

instance string

Optional identifier for the instance being validated.

Exceptions

ArgumentException

Thrown when no field errors are provided.

ValidationError(string, string, string, string?, string?)

Creates a validation error for a single field.

public ValidationError(string fieldDetail, string fieldName, string code, string? detail = null, string? instance = null)

Parameters

fieldDetail string

Error message describing what's wrong with the field.

fieldName string

Name of the field that failed validation.

code string

Machine-readable error code (defaults to "validation.error").

detail string

Optional overall error detail. If null, uses fieldDetail.

instance string

Optional identifier for the instance being validated.

Exceptions

ArgumentException

Thrown when fieldDetail is null or whitespace.

Properties

FieldErrors

Gets the collection of field-specific validation errors.

public ImmutableArray<ValidationError.FieldError> FieldErrors { get; }

Property Value

ImmutableArray<ValidationError.FieldError>

An immutable array of ValidationError.FieldError instances.

Methods

And(string, string)

Adds another field error to this validation error (fluent API).

public ValidationError And(string fieldName, string message)

Parameters

fieldName string

Name of the field.

message string

Validation error message.

Returns

ValidationError

A new ValidationError containing all field errors.

Remarks

This method creates a new instance; it does not mutate the original.

And(string, params string[])

Adds multiple error messages for a single field (fluent API).

public ValidationError And(string fieldName, params string[] messages)

Parameters

fieldName string

Name of the field.

messages string[]

Multiple validation error messages for this field.

Returns

ValidationError

A new ValidationError containing all field errors.

Remarks

This method creates a new instance; it does not mutate the original.

Equals(ValidationError?)

Determines whether the specified ValidationError is equal to the current instance.

public bool Equals(ValidationError? other)

Parameters

other ValidationError

The ValidationError to compare with the current instance.

Returns

bool

true if the specified object is equal to the current instance; otherwise, false.

Equals(object?)

Determines whether the specified object is equal to the current instance.

public override bool Equals(object? obj)

Parameters

obj object

The object to compare with the current instance.

Returns

bool

true if the specified object is equal to the current instance; otherwise, false.

For(string, string, string, string?, string?)

Creates a new validation error for a single field (fluent factory method).

public static ValidationError For(string fieldName, string message, string code = "validation.error", string? detail = null, string? instance = null)

Parameters

fieldName string

Name of the field.

message string

Validation error message.

code string

Error code (defaults to "validation.error").

detail string

Optional overall detail message.

instance string

Optional instance identifier.

Returns

ValidationError

A new ValidationError instance.

Remarks

Use this as a starting point, then chain with And(string, string) to add more field errors.

GetHashCode()

Returns the hash code for this instance.

public override int GetHashCode()

Returns

int

A 32-bit signed integer hash code.

Merge(ValidationError)

Merges this validation error with another, combining field errors and details.

public ValidationError Merge(ValidationError other)

Parameters

other ValidationError

The validation error to merge with.

Returns

ValidationError

A new ValidationError containing errors from both instances.

Remarks

Errors for the same field are combined without duplicates. Detail messages are concatenated if they differ. Error codes are combined if they differ.

This method creates a new instance; it does not mutate the original.

ToString()

Returns a string representation of this validation error including all field errors.

public override string ToString()

Returns

string

A formatted string containing the base error information and all field-specific error details.