CsvHelper version 22.1.2用于特定类型的属性的默认TypeConverter



在以前版本的CsvHelper中,可以将自定义TypeConverters以一种直接的方式分配给CsvConfiguration对象,如这里的Stackoverflow答案所述。在22.1.2版本中,似乎TypeConverterCache被移动到CsvContext类,但我无法访问它。

using (var reader = new StreamReader(path))
using (var csv = new CsvReader(reader, csvConfig))
{
// this works to access the existing TypeConverterCache objects
csv.Context.get_TypeConverterCache();
// error: Property, indexer, or event 'CsvContext.TypeConverterCache' is not supported by the language; try directly calling accessor methods 'CsvContext.get_TypeConverterCache()' or 'CsvContext.set_TypeConverterCache(?)
csv.Context.TypeConverterCache.AddConverter<bool>(new MyCustomBooleanConverter());
// error: CsvContext.set_TypeConverterCache(?)' is not supported by the language
csv.Context.set_TypeConverterCache(xyz);
}

我正在尝试为所有布尔字段设置默认转换器。我可以看到TypeConverterCache属性是在源代码CsvContext上的公共字段,所以我不确定我做错了什么。

public virtual TypeConverterCache TypeConverterCache { get; set; }

有没有人对在CsvHelper 22.1.2中为特定数据类型设置默认TyperConverter的最佳方法有任何见解?

使用。net 5似乎工作得很好。我不太确定dotnetfiddle使用的是哪个c#版本,但我希望在使用。net 5时使用最新的(9.0)。

然而,在这个小提琴使用。net框架4.7.2我可以重现你的错误。我的猜测是c# v7.3使用,但这只是一个猜测。

所以你的一个解决方案可能是升级到一个新版本的c#。或者,我建议你在项目的GitHub页面上创建一个问题,看看如果作者不遵循这里的SO标签,它是否有意。

最新更新