CsvHelper 27.*.*.*版本不支持ClassMap的ConvertUsing?GetField也无法使用?
问题原因
CsvHelper 27.x 版本对转换相关API做了破坏性调整,原有直接接收IReaderRow参数的ConvertUsing重载已被移除,字段读取方法需要从转换上下文的Row属性中调用。
修正后的代码
public class CashManagementRecordMap : ClassMap<CashManagementRecord> { public CashManagementRecordMap() { Map(m => m.RevenueCenterNumber).Convert(args => Convert.ToInt32(args.Row.GetField(1))); } }
变更说明
- 原有单参数的
ConvertUsing方法替换为Convert方法,入参为ConvertFromStringArgs类型 - 原来的行对象现在需要通过
args.Row获取,之后可以继续调用GetField系列方法读取指定列内容 - 如果需要同时适配写入场景的转换逻辑,可以使用双向转换的重载:
Map(m => m.RevenueCenterNumber) .Convert( args => Convert.ToInt32(args.Row.GetField(1)), args => args.Value.ToString() );
内容的提问来源于stack exchange,提问作者Ashok Jangid
相关产品推荐
相关产品推荐

