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 & 看起来我一直在使用的方法已经更新了。

现在又接受了两个参数。

我不确定 CsvConfigurationCultureInfo 是什么,或者我需要做什么来更正此错误。

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();
      }
}