Attributes

Most of the configuration done via class maps can also be done using attributes.

Data
Identifier||Amount2|IsBool|Constant
1|1,234|1,234|yes|a
2|1.234|1.234|no|b
Example
void Main()
{
    var config = CsvConfiguration.FromAttributes<Foo>();
    using (var reader = new StreamReader("path\\to\\file.csv"))
    using (var csv = new CsvReader(reader, config))
    {
        List<Foo> records = csv.GetRecords<Foo>().ToList();

        // These all print "True"

        Console.WriteLine(records.Count == 2);
        Console.WriteLine(records[0].Id == 1);
        Console.WriteLine(records[0].Amount == 1.234m);
        Console.WriteLine(records[0].Amount2 == 1234);
        Console.WriteLine(records[0].IsBool == true);
        Console.WriteLine(records[0].Constant == "bar");
        Console.WriteLine(records[0].Optional == null);
        Console.WriteLine(records[0].Ignored == null);

        Console.WriteLine(records[1].Amount == 1234);
        Console.WriteLine(records[1].Amount2 == 1.234m);

    }
}

[Delimiter("|")]
[CultureInfo("de-DE")]
public class Foo
{
    [Name("Identifier")]
    public int Id { get; set; }

    [Index(1)]
    public decimal Amount { get; set; }
    
    [CultureInfo("InvariantCulture")]
    public decimal Amount2 { get; set; }

    [BooleanTrueValues("yes")]
    [BooleanFalseValues("no")]
    public bool IsBool { get; set; }

    [Constant("bar")]
    public string Constant { get; set; }

    [Optional]
    public string Optional { get; set; }

    [Ignore]
    public string Ignored { get; set; }
}