You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CsvHelper配置更新致现有代码编译报错,求修复方案

CsvHelper新版本配置变更编译错误的解决方法

问题背景

CsvHelper更新后,原代码中直接设置csv.Configuration的HasHeaderRecord、MissingFieldFound、BadDataFound属性的写法失效——这些配置成员被改为只读。改用CsvConfiguration实例配置时,碰到两个编译错误:

  • MissingFieldFound委托不接受3个参数
  • BadDataFoundArgs不存在Row属性定义

错误原因

新版本CsvHelper调整了错误处理委托的签名,以及上下文参数的结构:

  • MissingFieldFound从原来的多参数委托改为仅接受MissingFieldFoundArgs类型的单个参数
  • BadDataFoundArgs不再直接提供Row属性,行信息需要通过上下文的解析器获取

解决方法

1. 修正MissingFieldFound的委托写法

将原来的三个参数改为从MissingFieldFoundArgs实例中提取所需信息:

MissingFieldFound = args => AddMissingFieldParseError(args.FieldName, args.Context.Parser.Row, args.Index)

2. 修正BadDataFound的行信息获取方式

通过args.Context.Parser.Row获取当前行数据,替代原来的args.Row:

BadDataFound = args => AddBadDataFoundParseError(args.Field, args.Context.Parser.Row)

修改后的完整代码

配置实例代码

var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = true,
    MissingFieldFound = args => AddMissingFieldParseError(args.FieldName, args.Context.Parser.Row, args.Index),
    BadDataFound = args => AddBadDataFoundParseError(args.Field, args.Context.Parser.Row)
};

完整使用代码

DataTable dataTable = null;
this._csvHeaders = null;

using (reader)
{
    using (var csv = new CsvReader(reader, config))
    {
        using (var dataReader = new CsvDataReader(csv))
        {
            // 校验表头
            this._csvHeaders = csv.Context.Reader.HeaderRecord.ToList();
            TrimHeaderNames(ref _csvHeaders);

            string errorMessage = string.Empty;
            if (!ValidateHeaders(_csvHeaders, out errorMessage))
            {
                var operationError = new XOperationError("发现重复错误", errorMessage);
                this.ParseErrors.Clear();
                this.ParseErrors.Add(0, new List<XOperationError> { operationError });
                return null;
            }

            dataTable = new DataTable();
            dataTable.Load(dataReader);
        }
    }
}

内容的提问来源于stack exchange,提问作者T. J. Fan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:52:41