IRequestHandler return void

Generally speaking, if a Task based method does not return anything you can return a completed Task

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

Now, in MediatR terms a value needs te be returned. In case of no value you can use Unit:

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

or, in case of some async code somewhere

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

        return Unit.Value;
    }

The class signature should then be:

public class CreatePersonHandler : IRequestHandler<CreatePersonCommand>

which is short for

public class CreatePersonHandler : IRequestHandler<CreatePersonCommand, Unit>

Leave a Comment