Пытаясь записать содержимое людей в 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);
}
}
}
StreamWriter
вISerializer
?StreamWriter
является частью самого .NET - он не может реализовывать интерфейсы из определенного стороннего пакета.CsvHelper.CsvWriter(TextWriter)
это не входит в сферу. Дважды проверьте, что вы получаете правильную версию пакета, и этоStreamWriter
обычный класс (System.IO.StreamWriter
). Используйте «Перейти к определению»,CsvWriter
чтобы перепроверить.CsvWriter
конструктор, который принимаетISerializer
, и терпит неудачу, поскольку нет преобразования. Он должен был выбратьCsvWriter
конструктор, который принимаетTextWriter
, посколькуStreamWriter
наследует от него, так что либо этот конструктор отсутствует (по какой-либо причине), либо разрешение перегрузки компилятора нарушено (немного менее вероятно, но произошли более странные вещи).Ответы:
Произошло серьезное изменение в версии 13.0.0. Было много проблем с локализацией, поэтому @JoshClose требует от пользователей указывать, что
CultureInfo
они хотят использовать. Теперь вам нужно включитьCultureInfo
при созданииCsvReader
иCsvWriter
. https://github.com/JoshClose/CsvHelper/issues/1441Примечание:
CultureInfo.CurrentCulture
был по умолчанию в предыдущих версиях.Рассматривать
CultureInfo.InvariantCulture
- Если вы контролируете как запись, так и чтение файла. Таким образом, он будет работать независимо от того, какую культуру использует пользователь на своем компьютере.CultureInfo.CreateSpecificCulture("en-US")
- Если вам это нужно, чтобы работать для определенной культуры , независимо от культуры пользователя.источник