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"));
    }
}