using System.Globalization;
using System.Collections.Generic;
using CsvHelper.Configuration;
using CsvHelper.TypeConversion;
public static void Main()
var sb = new StringBuilder();
sb.AppendLine("IsTrue,Bar");
sb.AppendLine("iAmTrUe,Yep");
sb.AppendLine("somethingElse,Nope");
using (var stream = new MemoryStream())
using (var reader = new StringReader(sb.ToString()))
using (var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture))
csvReader.Context.TypeConverterCache.AddConverter<bool>(new MyCustomBooleanConverter());
foos = csvReader.GetRecords<Foo>().ToList();
foreach (var foo in foos)
Console.WriteLine("IsTrue: {0}, Bar: {1}", foo.IsTrue, foo.Bar);
StringWriter writer = new StringWriter();
using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))
csvWriter.Context.TypeConverterCache.AddConverter<bool>(new MyCustomBooleanConverter());
csvWriter.WriteRecords(foos);
Console.WriteLine(writer.ToString());
public bool IsTrue { get; set; }
public string Bar { get; set; }
public class MyCustomBooleanConverter : ITypeConverter
public object ConvertFromString(String str, IReaderRow row, MemberMapData data)
public string ConvertToString(Object obj, IWriterRow row, MemberMapData data)