Определите, какой ClassMap CsvHelper следует использовать в зависимости от сопоставляемого типа.C#

Место общения программистов C#
Ответить
Anonymous
 Определите, какой ClassMap CsvHelper следует использовать в зависимости от сопоставляемого типа.

Сообщение Anonymous »

Я пишу приложение, которое должно анализировать множество различных файлов csv и загружать записи из этих файлов в базу данных. Для выполнения анализа я использую пакет CsvHelper Nuget. Я написал несколько методов для анализа данных определенного типа и карты классов этого типа.

Код: Выделить всё

private IEnumerable ProcessFile(string filePath) where Map : CsvHelper.Configuration.ClassMap, new()
{
LogInformation($"Processing file at {filePath}");
try
{
using var reader = new StreamReader(filePath);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
var records = csv.GetRecordsSafe();
LogInformation($"Successfully processed {records.Count()} records from {filePath}");
return records;
}
catch (Exception ex)
{
LogError($"Failed to process file at {filePath}: {ex.Message}");
return [];
}

}

Код: Выделить всё

public static IEnumerable GetRecordsSafe(this CsvHelper.CsvReader csvReader) where Map : CsvHelper.Configuration.ClassMap
{
try
{
csvReader.Context.RegisterClassMap();
return csvReader.GetRecords();
}
catch (CsvHelper.TypeConversion.TypeConverterException)
{
throw;
}
}
Есть ли способ написать метод ProcessFile так, чтобы он требовал только объявления типа или карты? Я бы хотел, чтобы метод мог принимать только один параметр типа, если это возможно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-mapped
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»