using System.Collections.Generic;
using AgileObjects.AgileMapper.Members;
using Agile = AgileObjects.AgileMapper;
public static void Main()
var mapper = Agile.Mapper.CreateNew();
.PassExceptionsTo(LogMappingException);
var readerResult = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
{"PhoneNumbers[0]", "01234 567890"},
{"PhoneNumbers[1]" , "07890 654321"},
{"PhoneNumbers[2]", "01234 987654"},
{"Specialties[0]Id", 123},
{"Specialties[0]Name", "Emergency Medicine"},
{"Specialties[1]Id", 456},
{"Specialties[1]Name", "Critical Care"},
Console.WriteLine( mapper.GetPlanFor<IDictionary<string, object?>>().ToANew<Doctor>());
var doctor = mapper.Map(readerResult).ToANew<Doctor>();
static void LogMappingException(IMappingExceptionData<IDictionary<string, object?>, Doctor> problem)
Console.WriteLine(problem);
public string? Name { get; set; }
public string[] PhoneNumbers { get; set; }
public System.Collections.Generic.IReadOnlyCollection<Specialty>? Specialties { get; set; }
public int Id { get; set; }
public string? Name { get; set; }