public async Task <PipelineResult> Execute(CommonPipelineDto dto) { var result = new PipelineResult(); var pipeline = _builder.BuildPipelineByDto(dto); foreach (var pipelineStepType in pipeline.Steps) { try { var step = _builder.GetStepByType(pipelineStepType); await step.Execute(pipeline.PayloadDto); } catch (Exception e) { _logger.LogError(e.Message); result.IsSuccess = false; } finally { result.Result = pipeline.PayloadDto; } } return(result); }