TurboMediator
Patterns

Built-in Validation

Lightweight validation without FluentValidation dependency

The TurboMediator.Validation package provides a lightweight built-in validation system with an AbstractValidator and RuleBuilder, independent of FluentValidation.

Installation

dotnet add package TurboMediator.Validation

Configuration

builder.Services.AddTurboMediator(m =>
{
    m.WithValidation<IMessage, object>();
});

Creating Validators

public class CreateUserValidator : AbstractValidator<CreateUserCommand>
{
    public CreateUserValidator()
    {
        RuleFor(x => x.Name)
            .NotEmpty()
            .MaximumLength(100);

        RuleFor(x => x.Email)
            .NotEmpty()
            .EmailAddress();
    }
}

Register validators in DI:

builder.Services.AddTransient<IValidator<CreateUserCommand>, CreateUserValidator>();

Difference from FluentValidation

This built-in validator is a lightweight alternative for projects that don't want the FluentValidation dependency. For full-featured validation (complex rules, conditional validation, custom validators), use the TurboMediator.FluentValidation package instead.

On this page