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.ValidationConfiguration
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.