почему я не могу конвертировать из 'System.IO.StreamWriter' в 'CsvHelper.ISerializer'? - PullRequest
9 голосов
/ 17 января 2020

Попытка записать содержимое людей в CSV-файл и затем экспортировать его, однако я получаю ошибку сборки и ее сбой. ошибка:

cannot convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer'

Не уверен, почему это происходит, если только я не уверен, что сделал это таким образом много раз.

private void ExportAsCSV()
{
    using (var memoryStream = new MemoryStream())
    {
        using (var writer = new StreamWriter(memoryStream))
        {
            using (var csv = new CsvHelper.CsvWriter(writer))
            {
                csv.WriteRecords(people);
            }

            var arr = memoryStream.ToArray();
            js.SaveAs("people.csv",arr);
        }
    }
}

1 Ответ

29 голосов
/ 17 января 2020

Произошло серьезное изменение в версии 13.0.0. Было много проблем с локализацией, поэтому @JoshClose требует от пользователей указать CultureInfo, который они хотят использовать. Теперь вам нужно включить CultureInfo при создании CsvReader и CsvWriter. https://github.com/JoshClose/CsvHelper/issues/1441

private void ExportAsCSV()
{
    using (var memoryStream = new MemoryStream())
    {
        using (var writer = new StreamWriter(memoryStream))
        {
            using (var csv = new CsvHelper.CsvWriter(writer, System.Globalization.CultureInfo.CurrentCulture)
            {
                csv.WriteRecords(people);
            }

            var arr = memoryStream.ToArray();
            js.SaveAs("people.csv",arr);
        }
    }
}

Примечание: CultureInfo.CurrentCulture было значением по умолчанию в предыдущих версиях.

Рассмотрим

  • CultureInfo.InvariantCulture - Если вы контролируете как запись, так и чтение файла. Таким образом, он будет работать независимо от того, какую культуру использует пользователь на своем компьютере.
  • CultureInfo.CreateSpecificCulture("en-US") - если вам это нужно для работы с определенной культурой , независимой от культуры пользователя.
...