public void Import(IStorageReader <string> reader, IParser <string, TradeRecord> parser, IDataSaver <TradeRecord> saver, ILogger logger) { ValidateOnNull(reader, nameof(reader)); ValidateOnNull(parser, nameof(parser)); ValidateOnNull(saver, nameof(saver)); var data = reader.Read().ToList(); List <TradeRecord> records = new List <TradeRecord>(); for (int i = 0; i < data.Count; i++) { try { records.Add(parser.Parse(data[i])); } catch (Exception e) //TODO: ValidationException (custom) { logger?.Warn($"{e.Message} {{line #{i}}}"); } } saver.Save(records); logger?.Info("Success"); }