为什么我不能从“System.IO.StreamWriter"转换为“CsvHelper.ISerializer"? [英] Why can't I convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer'?
问题描述
尝试将人们的内容写入 CSV 文件,然后将其导出,但是我遇到了构建错误并且失败了.错误是:
Trying to write the contents of people to a CSVfile and then export it, however I am getting a build error and its failing. the error is:
无法从System.IO.StreamWriter"转换为CsvHelper.ISerializer"
不知道为什么会发生这种情况,除非我确定我已经这样做了很多次.
Not sure why this is happening unless as I am certain I have done it this way loads of times.
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);
}
}
}
推荐答案
13.0.0 版发生了重大变化.本地化存在很多问题,因此@JoshClose 要求用户指定他们想要使用的 CultureInfo
.您现在需要在创建 CsvReader
和 CsvWriter
时包含 CultureInfo
.https://github.com/JoshClose/CsvHelper/issues/1441
There was a breaking change with version 13.0.0. There have been many issues with localization, so @JoshClose is requiring users to specify the CultureInfo
they want to use. You now need to include CultureInfo
when creating CsvReader
and 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
是以前版本的默认设置.
Note: CultureInfo.CurrentCulture
was the default in previous versions.
考虑
CultureInfo.InvariantCulture
- 如果您控制文件的写入和读取.这样,无论用户在他的计算机上使用什么文化,它都能正常工作.CultureInfo.CreateSpecificCulture("en-US")
- 如果您需要它为 特定文化,独立于用户的文化.
CultureInfo.InvariantCulture
- If you control both the writing and the reading of the file. That way it will work no matter what culture the user has on his computer.CultureInfo.CreateSpecificCulture("en-US")
- If you need it to work for a particular culture, independent of the user's culture.
这篇关于为什么我不能从“System.IO.StreamWriter"转换为“CsvHelper.ISerializer"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!