【问题标题】:CsvHelper version 22.1.2 default TypeConverter for properties of a particular typeCsvHelper 版本 22.1.2 默认 TypeConverter 用于特定类型的属性
【发布时间】:2023-03-31 01:26:02
【问题描述】:

在 CsvHelper 的早期版本中,可以直接将自定义 TypeConverters 分配给 CsvConfiguration 对象,如 Stackoverflow 答案 here 中所述。在 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 的最佳方法?

【问题讨论】:

    标签: c# csvhelper


    【解决方案1】:

    根据this fiddle,使用 .NET 5 似乎可以正常工作。我不太确定 dotnetfiddle 使用哪个 C# 版本,但我希望在使用 .NET 5 时使用最新的 (9.0)。

    但是,在使用 .NET Framework 4.7.2 的 this fiddle 中,我可以重现您的错误。我的猜测是使用了 C# v7.3,但这只是猜测。

    因此,您的一个解决方案可能是升级到较新版本的 C#。或者,我建议您在project's GitHub page 上创建一个问题,以查看它是否有意,以防作者未在此处遵循 SO 标签。

    【讨论】:

      猜你喜欢
      • 2018-06-19
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2013-12-09
      • 2020-10-28
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多