public IEnumerable <string[]> ReadRows(Stream source) { if (source == null) { throw new ArgumentNullException(nameof(source)); } using (var reader = streamReaderFactory.Build(source)) { int rowNumber = 0; while (streamPositionReporter.IsEndOfStream(reader) == false) { rowNumber++; yield return(ReadNextRow(reader, rowNumber)); } } }