using FluentValidation; namespace WebApi.Filters; public sealed class ValidationFilter(IValidator validator) : IEndpointFilter where T : class { public async ValueTask InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next) { var argument = context.Arguments.OfType().FirstOrDefault(); if (argument is null) return await next(context); var result = await validator.ValidateAsync(argument, context.HttpContext.RequestAborted); return result.IsValid ? await next(context) : Results.ValidationProblem(result.ToDictionary()); } }