В моем коде есть 2 типа команд:
1. Возвращающие результат
2. Не возвращающие результат (Unit - тип "пустышка")
public interface ICommand : ICommand<Unit>{}
public interface ICommand<TResult>{}
На данный момент обработчики этих команд выглядят следующим образом:
public ICommandHandler<in TCommand> where TCommand : class, ICommand {
Task Handle(TCommand command, CancellationToken cancellationToken = default(CancellationToken));
}
public ICommandHandler<in TCommand, TResult> where TCommand : class, ICommand<TResult> {
Task<TResult> Handle(TCommand command, CancellationToken cancellationToken = default(CancellationToken));
}
Мне бы хотелось сделать так, чтобы эти обработчики были частью одного типа, чтобы можно было писать декораторы поверх всех типов команд без дублирования кода.
Как это можно сделать?