using System; using System.Threading.Tasks; namespace WotBlitzStatisticsPro.Logic.Pipeline { public class OperationMediator: IOperation { private readonly IOperation _current; private readonly IOperation? _next; public OperationMediator(IOperation current, IOperation? next) { _current = current ?? throw new ArgumentNullException(nameof(current)); _next = next; } public Task Invoke(TContext context, Func? next) { return _current.Invoke(context, c => _next == null ? Task.CompletedTask : _next.Invoke(c, null)); } } }