Если ваш динамический объект реализует IDictionary<string,object>
(например, ExpandoObject
), то должно работать следующее. Должен быть более простой способ сделать это, поскольку анонимные объекты отображаются очень хорошо, даже если дело обстоит иначе.
Mapper.Initialize(cfg =>
{
cfg.CreateMap<IDictionary<string, object>, Foo>()
.ConstructUsing(d =>
{
Foo foo = new Foo();
foreach (System.Reflection.PropertyInfo prop in typeof(Foo).GetProperties())
{
foreach (KeyValuePair<string, object> entry in d)
{
if (entry.Key.ToLowerInvariant() == prop.Name.ToLowerInvariant())
{
prop.SetValue(foo, entry.Value);
break;
}
}
}
return foo;
});
});