FileHelpers FieldConverter没有';如果值为空白,则不会被调用

本文关键字:空白 调用 没有 FieldConverter 如果 FileHelpers | 更新日期: 2023-09-27 18:30:05

我正在尝试使用FileHelpers解析文件。我需要将字段映射到KeyValuePair,对于其中的一些字段,如果文件中的字符串是空白,则会有一个映射。但是,当文件中的字符串为空白时,我的自定义FieldConverter的FieldToString方法似乎不会被调用。我希望它能被称为!

这是我的字段定义:

[FieldFixedLength(1)]
[FieldTrim(TrimMode.Right)]
[FieldConverter(typeof(AreYouOneOfTheFollowingConverter))]
public KeyValuePair<int, string>? AreYouOneOfTheFollowing;

这是我的转换器([case":]从未命中):

public class AreYouOneOfTheFollowingConverter : ConverterBase
{
    public override object StringToField(string from)
    {
        switch (from)
        {
            case "1":
                {
                    return new KeyValuePair<int, string>(1469, "Yes");
                }
            case " ":
                {
                    return new KeyValuePair<int, string>(1470, "No");
                }
            default:
                {
                    if (String.IsNullOrWhiteSpace(from))
                    {
                        return from;
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }
                }
        }
    }
}

想法?

FileHelpers FieldConverter没有';如果值为空白,则不会被调用

ConverterBase有一个虚拟方法,您可以覆盖它来控制空白的自动处理。

public class AreYouOneOfTheFollowingConverter : ConverterBase
{
    protected override bool CustomNullHandling
    {
        /// you need to tell the converter not 
        /// to handle empty values automatically
        get { return true; } 
    }
    public override object StringToField(string from)
    {
         /// etc...
    }
}