从 2.8.4 更新到 27.1.1 后,C# CsvWriter 抛出“CsvWriter 不包含接受 1 个参数的构造函数”
Posted
技术标签:
【中文标题】从 2.8.4 更新到 27.1.1 后,C# CsvWriter 抛出“CsvWriter 不包含接受 1 个参数的构造函数”【英文标题】:C# CsvWriter throws "CsvWriter does not contain a constructor that takes 1 arguments" after update from 2.8.4 to 27.1.1 【发布时间】:2021-11-25 00:15:15 【问题描述】:我将项目中 CsvHelper
的包从 2.8.4 更新到了 27.1,看起来我一直使用的方法已经更新。
现在又多了两个参数。
我不确定CsvConfiguration
或CultureInfo
是什么,或者我需要做什么来纠正这个错误。
CsvWriter does not contain a constructor that takes 1 argument.
新方法:
public CsvWriter(TextWriter writer, CsvConfiguration configuration);
public CsvWriter(TextWriter writer, CultureInfo culture, bool leaveOpen = false);
我的代码:
using(var fs = new MemoryStream())
using(var tx = new StreamWriter(fs))
var csv = new CsvWriter(tx);
csv.WriteHeader<TemplateCsvModel>();
csv.WriteRecords(templates);
csv.Dispose();
return Encoding.UTF8.GetPreamble().Concat(fs.ToArray()).ToArray();
【问题讨论】:
您可能希望首先查看他们的文档,了解配置的可用和要求:joshclose.github.io/CsvHelper/getting-started。除非您知道您需要特殊情况,否则您可能会使用 CultureInfo.InvariantCulture 感谢 System.Globalization ? 【参考方案1】:CultureInfo
需要考虑不同文化之间的不同格式和解析,因为并非世界上每个人的日期、货币等格式都相同。
如果您不需要根据用户本地设置解析数据,请使用CultureInfo.InvariantCulture
:
using (var fs = new MemoryStream())
using var tx = new StreamWriter(fs)
using (var csv = new CsvWriter(tx, CultureInfo.InvariantCulture)
csv.WriteHeader<TemplateCsvModel>();
csv.WriteRecords(templates);
return Encoding.UTF8.GetPreamble().Concat(fs.ToArray()).ToArray();
【讨论】:
以上是关于从 2.8.4 更新到 27.1.1 后,C# CsvWriter 抛出“CsvWriter 不包含接受 1 个参数的构造函数”的主要内容,如果未能解决你的问题,请参考以下文章
C# 更新并将对象从 MainForm 传递到已打开的 childForm
C# 从程序线程更新表单(richTextBox 和 toolStripStatusLabel)