Saltar al contenido

IRequestHandler return void

Solución:

En términos generales, si un método basado en tareas no devuelve nada, puede devolver una tarea completada.

    public Task Handle(CreatePersonCommand message, CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }

Ahora, en términos de MediatR, un valor necesidades te será devuelto. En caso de que no tenga valor, puede utilizar Unit:

    public Task<Unit> Handle(CreatePersonCommand message, CancellationToken cancellationToken)
    {
        return Task.FromResult(Unit.Value);
    }

o, en caso de algún código asincrónico en alguna parte

    public async Task<Unit> Handle(CreatePersonCommand message, CancellationToken cancellationToken)
    {
        await Task.Delay(100);

        return Unit.Value;
    }

La firma de la clase debería ser:

public class CreatePersonHandler : IRequestHandler<CreatePersonCommand>

que es la abreviatura de

public class CreatePersonHandler : IRequestHandler<CreatePersonCommand, Unit>

Solución alternativa para cualquiera que no quiera usar Unit por algún motivo. Puede crear una clase denominada VoidResult o EmptyResult y luego usarla como devolución para todas las solicitudes que no devuelvan nada.

public class CreatePersonHandler : IRequestHandler<CreatePersonCommand, VoidResult>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *