Type Converter

Introduction

A TypeConverter is used to convert the text value in a column of your CSV data into a .NET type.

All available TypeConverter in the library are initialized with sane default formats to parse data. These formats default to the same formats .NET uses to parse string data. So MSDN is a great source of information to get informations about formatting strings.

If you need to parse custom formats, which do not match the default format, you have to specify a custom format for the converter when defining the CsvMapping, which is shown in the example on this page.

Available Type Converters

.NET CLR Type Type Converter
Boolean BoolConverter
Boolean? NullableBooleanConverter
Byte ByteConverter
Byte? NullableByteConverter
DateTime DateTimeConverter
DateTime? NullableDateTimeConverter
Decimal DecimalConverter
Decimal? NullableDecimalConverter
Double DoubleConverter
Double? NullableDoubleConverter
Enum EnumConverter<TEnum>
Guid GuidConverter
Guid? NullableGuidConverter
Int16 Int16Converter
Int16? NullableInt16Converter
Int32 Int32Converter
Int32? NullableInt32Converter
Int64 Int64Converter
Int64? NullableInt64Converter
SByte SByteConverter
SByte? NullableSByteConverter
Single SingleConverter
Single? NullableSingleConverter
String StringConverter
TimeSpan TimeSpanConverter
TimeSpan? NullableTimeSpanConverter
UInt16 UInt16Converter
UInt16? NullableUInt16Converter
UInt32 UInt32Converter
UInt32? NullableUInt32Converter
UInt64 UInt64Converter
UInt64? NullableUInt64Converter

Parsing Custom Formats

In order to parse a value with a custom format, you have to instantiate a Type Converter with the format. All of the available Type Converters take custom format strings. You should look up the MSDN documentation on the formatting strings for the specific .NET type. Some converters can also use an IFormatProvider, again MSDN is a great resource for information.

The custom converter needs to be defined when defining the CsvMapping, by passing it into the CsvMapping.MapProperty(...). You will understand everything with an example.

DateTimeConverter Example

Imagine a CSV file contains data with a weird format for dates, like this 2004###01###25. These values cannot be parsed with the default date format, but in TinyCsvParser a DateTimeConverter with the custom date time format can be defined.

To use the custom converter, you have to pass it to the MapProperty method on the property mapping.

private class CsvPersonMappingWithCustomConverter : CsvMapping<Person>
{
    public CsvPersonMappingWithCustomConverter()
    {
        MapProperty(0, x => x.FirstName);
        MapProperty(1, x => x.LastName);
        MapProperty(2, x => x.BirthDate, new DateTimeConverter("yyyy###MM###dd"));
    }
}