public async Task <T> ExecuteAsync(T input) { var type = this.GetType(); var isOverriden = type.GetMethod("ProcessAsync").DeclaringType == type; //Calling async method if availeble otherwise calling sync method if (isOverriden) { input = await ProcessAsync(input); } else { input = Process(input); } if (_nextStep == null) { return(input); } else { return(await _nextStep.ExecuteAsync(input)); } }
public Task <T> ExecuteAsync(T input) { return(_rootStep.ExecuteAsync(input)); }