using System.Collections.Generic;
using AgileObjects.AgileMapper;
public string Name { get; set; }
public string[] PhoneNumbers { get; set; }
public IReadOnlyCollection<Specialty> Specialties { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public T Value { get; set; }
public static void Main()
dynamic source = new ExpandoObject();
source.PhoneNumbers_0 = "01234 567890";
source.PhoneNumbers_1 = "07890 654321";
source.Specialties_0_Id = 123;
source.Specialties_0_Name = "Emergency Medicine";
source.Specialties_1_Id = 456;
source.Specialties_1_Name = "Critical Care";
var doctor = Mapper.Map(new Wrapper<object> { Value = source }).ToANew<Wrapper<Doctor>>().Value;
Console.WriteLine($"Doctor : {doctor.Name}");