I have the following class
public class EventObject
{
public int OrderID { get; private set; }
public int DemandID { get; private set; }
public string ExternalEventID { get; private set; }
public int Part { get; private set; }
public int BasedOnObjectID { get; private set; }
public int BasedOnStateID { get; private set; }
public DateTime StartDate { get; private set; }
public DateTime EndDate { get; private set; }
public int? EventID { get; private set; }
public static IEnumerable<EventObject> LoadFromCSV(TextReader reader)
{
var plannedEventsToReturn = new List<EventObject>();
var csv = new CsvReader(reader);
csv.Configuration.RegisterClassMap<EventObjectMap >();
return csv.GetRecords<EventObject>().ToList();
}
}
and I have created a mapping class as documentd in csvHElper
public sealed class EventObjectMap : CsvClassMap<EventObject>
{
public EventObjectMap ()
{
Map(m => m.OrderID).Index(0);
Map(m => m.DemandID).Index(1);
Map(m => m.ExternalEventID).Index(2);
Map(m => m.Part).Index(3);
Map(m => m.BasedOnObjectID).Index(4);
Map(m => m.BasedOnStateID).Index(5);
Map(m => m.StartDate).Index(6).TypeConverter<OptimizationDateTimeConverter>();
Map(m => m.EndDate).Index(7).TypeConverter<OptimizationDateTimeConverter>();
Map(m => m.EventID).Index(8).TypeConverter<NullableIntConverter>();
}
}
when I hit the line
return csv.GetRecords<EventObject>().ToList();
i get an exception
no properties are mapped for type
Found the problem .. the properties had a private set .. they need to be public like this..
public int OrderID { get; set; }
public int DemandID { get; set; }
public string ExternalEventID { get; set; }
public int Part { get; set; }
public int BasedOnObjectID { get; set; }
public int BasedOnStateID { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int? EventID { get; set; }