using FluentValidation; using MediatR; using Microsoft.Extensions.DependencyInjection; namespace BuildingBlocks.Validation; public sealed class ValidationBehavior : IPipelineBehavior where TRequest : class, IRequest { private IValidator _validator; private readonly IServiceProvider _serviceProvider; public ValidationBehavior(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } public async Task Handle(TRequest request, RequestHandlerDelegate next, CancellationToken cancellationToken) { _validator = _serviceProvider.GetService>(); if (_validator is null) return await next(); await _validator.HandleValidationAsync(request); return await next(); } }