類型“”上的多個(gè)方法“ConvertFromString”與提供的參數(shù)兼容

我的CsvBool轉(zhuǎn)換器是

public class CsvBool : BooleanConverter
    {
        public override string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData)
        {
            if (value == null)
                return string.Empty;
            
            var boolValue = (bool)value;

            return boolValue ? "YES" : "NO";
        }

        public override string ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
        {
            if (text == null)
                return string.Empty;

            if (text == "YES")
                return "true";
            else
                return "false";   
        }
    }

編寫文件時(shí),一切都按預(yù)期工作。所有真正的布爾值都寫為YES

嘗試讀取csv文件時(shí),我收到錯(cuò)誤

More than one method 'ConvertFromString' on type 'CsvBool' is compatible with the supplied arguments.

錯(cuò)誤類型為第一個(gè)循環(huán)中的CsvHelperException

我在這里做錯(cuò)了什么?

using (var reader = new StreamReader(filePath))
   using (var csv = new CsvReader(reader, csvConfig))

     csv.Context.TypeConverterCache.RemoveConverter<bool>();
     csv.Context.TypeConverterCache.AddConverter<bool>(new CsvBool());

     csv.Context.RegisterClassMap<CsvProduct>();
     var CsvProducts = csv.GetRecords<Product>();
     foreach (var CsvProduct in CsvProducts)
     {

     }

這是我的地圖課

public class CsvProduct : ClassMap<Product>
    {
        public CsvProduct()
        {
            Map(m => m.Active).Name("ActiveColumn").TypeConverter<CsvBool>();
        }
    }
? 最佳回答:

您的ConvertFromString需要返回object而不是string。由于您將其標(biāo)記為return string,它現(xiàn)在既可以看到返回對(duì)象的BooleanConverter中的原始ConvertFromString,也可以看到返回字符串的{%16}。

public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
    if (text == null)
        return string.Empty;

    if (text == "YES")
        return true;
    else
        return false;
}

僅供參考,已經(jīng)有一個(gè)TypeConverterOption可以滿足您的需求。

您可以在ClassMap上單獨(dú)設(shè)置

Map(m => m.Active).Name("ActiveColumn").TypeConverterOption.BooleanValues(true,false,"YES").TypeConverterOption.BooleanValues(false,false,"NO");

或在TypeConverterOptionsCache

csv.Context.TypeConverterOptionsCache.GetOptions<bool>().BooleanTrueValues.Add("YES");
csv.Context.TypeConverterOptionsCache.GetOptions<bool>().BooleanFalseValues.Add("NO");
主站蜘蛛池模板: 久久国产免费一区二区三区| 免费国产在线精品一区| 国产成人一区二区三区视频免费| 国产成人无码一区二区三区| 中文字幕亚洲一区二区va在线| 久久精品一区二区东京热| 亚洲视频一区调教| 四虎一区二区成人免费影院网址| 久久精品国产第一区二区| 精品一区二区三区东京热| 波多野结衣电影区一区二区三区 | 国产Av一区二区精品久久| 国产中文字幕一区| 亚洲变态另类一区二区三区| 一区二区三区高清视频在线观看| 色窝窝免费一区二区三区| 国产亚洲一区二区三区在线| 色欲AV无码一区二区三区| 无码人妻精品一区二区三区夜夜嗨| 国产婷婷色一区二区三区深爱网| 日韩一区二区在线观看视频| 久久精品一区二区三区中文字幕| 国产一区二区在线观看视频| 国产精品亚洲一区二区三区久久 | 国内偷窥一区二区三区视频| 亚洲丶国产丶欧美一区二区三区| 无码人妻精品一区二区| 国产高清精品一区| 无码少妇一区二区浪潮av| 精品国产亚洲第一区二区三区| 色噜噜狠狠一区二区| 日本免费一区二区三区| 久久精品一区二区国产| 久久99久久无码毛片一区二区| 一区二区三区视频免费| 一级毛片完整版免费播放一区| 麻豆精品一区二区综合av| 玩弄放荡人妻一区二区三区| 波多野结衣一区二区三区高清在线 | 在线中文字幕一区| 久久久久成人精品一区二区 |