private bool HandleRecordSeparator(IList<object> fieldValues, ParseContext parseContext) { HandleFieldSeparator(fieldValues, parseContext); parseContext.ResetFieldNumber(); if (parseContext.ReadingHeaderRow) { CheckHeaderRowForDuplicateFieldNames(fieldValues.Cast<string>()); parseContext.ReadingHeaderRow = false; var headerRowFieldIndexes = new Dictionary<string, int>(); for (var i = 0; i < fieldValues.Count; i++) { var key = (string)fieldValues[i]; headerRowFieldIndexes[key] = i; } parseContext.HeaderRowFieldIndexes = headerRowFieldIndexes; if (parseContext.NamedFieldConverters != null) { var indexedFieldConverters = new Dictionary<int, Func<string, object>>(); foreach (var kvp in parseContext.HeaderRowFieldIndexes) { Func<string, object> converter; if (parseContext.NamedFieldConverters.TryGetValue(kvp.Key, out converter)) { indexedFieldConverters[kvp.Value] = converter; } } parseContext.IndexedFieldConverters = indexedFieldConverters; } fieldValues.Clear(); return false; } parseContext.RecordNumber++; return true; }