C# CsvWriter 在从 2.8.4 更新到 27.1.1 后抛出 "CsvWriter does not contain a constructor that takes 1 arguments"
C# CsvWriter throws "CsvWriter does not contain a constructor that takes 1 arguments" after update from 2.8.4 to 27.1.1
我将项目中 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();
}
}
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();
}
}
我将项目中 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();
}
}
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();
}
}