C# CsvHelper ByteArrayConverter空值问题

C# CsvHelper ByteArrayConverter空值问题,c#,.net-core,csvhelper,C#,.net Core,Csvhelper,我在使用CsvHelper将空值is NULL键字段转换为字节数组时遇到了一点问题,我一直遇到以下异常: CsvHelper.ReaderException: An unexpected error occurred. ---> System.FormatException: Could not find any recognizable digits. at System.ParseNumbers.StringToInt(ReadOnlySpan`1 s, Int32 radix, In

我在使用CsvHelper将空值is NULL键字段转换为字节数组时遇到了一点问题,我一直遇到以下异常:

CsvHelper.ReaderException: An unexpected error occurred.
---> System.FormatException: Could not find any recognizable digits.
at System.ParseNumbers.StringToInt(ReadOnlySpan`1 s, Int32 radix, Int32 flags, Int32& currPos)
at System.Convert.ToByte(String value, Int32 fromBase)
at CsvHelper.TypeConversion.ByteArrayConverter.HexStringToByteArray(String hex)
at CsvHelper.TypeConversion.ByteArrayConverter.ConvertFromString(String text, IReaderRow row, MemberMapData memberMapData)
at lambda_method(Closure )
at CsvHelper.Expressions.RecordCreator.Create[T]()
at CsvHelper.Expressions.RecordManager.Create[T]()
at CsvHelper.CsvReader.GetRecord[T]()
--- End of inner exception stack trace ---
映射设置如下所示:

public sealed class ZaznamMapping : ClassMap<Zaznam>
{
    public ZaznamMapping(FileSettings configuration)
    {
        var nullValues = new[] { "NULL", "null", string.Empty };

        for (int i = 0; i < configuration.Count(); i++)
        {
            switch (configuration[i])
            {
                case Col.Ignore: continue;
                case Col.Id:     Map(m => m.Id).Index(i).TypeConverterOption.NullValues(nullValues); break;
                case Col.Idd:    Map(m => m.Idd).Index(i).TypeConverterOption.NullValues(nullValues); break;
                case Col.Data:   Map(m => m.Data).Index(i).TypeConverterOption.NullValues(nullValues); break;
                case Col.Key:    Map(m => m.Key).Index(i).TypeConverterOption.NullValues(nullValues); break;
                default: throw new NotSupportedException($"Mapping() - Unknown column \"{configuration[i].ToString()}\"!");
            }
        }
    }
}
文件键coluimn中的值实际上是NULL,就像包含NULL字母的字符串一样。ByteArrayconverter不应该尊重TypeConverter选项吗

问题是:

我做错什么了吗? 我应该自己做转换器吗?
看起来空值逻辑没有添加到ByteArrayConverter。如果查看,则的ConvertFromString方法中不存在相同的空逻辑。您应该能够创建自己的自定义TypeConverter来添加逻辑,然后为所有字节[]注册它

公共类NullByteArrayConverter:ByteArrayConverter { 公共重写对象ConvertFromStringstring文本、IReaderRow行、MemberMapData MemberMapData { memberMapData.TypeConverterOptions.NullValues中的foreach变量nullValue { 如果text==nullValue { 返回null; } } 返回base.ConvertFromStringtext、row、memberMapData; } } csv.Configuration.TypeConverterCache.AddConverternew NullByteArrayConverter;
但是您的nullValues数组也包含空字符串?
public sealed class Zaznam
{
    public int Id { get; set; }
    public int Idd { get; set; }
    public byte[] Data { get; set; }
    public byte[] Key { get; set; }
}