Вот моя конфигурация AutoMapper:
Mapper.CreateMap<Source, Destination>()
.ConstructUsing(s => new Destination(s.CreatedDate.DateTime));
Оба класса имеют одно свойство, CreatedDate
, но они бывают разных типов:
public class Source
{
public DateTimeOffset CreatedDate { get; set; }
}
public class Destination
{
public Destination(DateTime created) { CreatedDate = created; }
public DateTime CreatedDate { get; set; }
}
Эта конфигурация прекрасно работает, когда я сопоставляю экземпляры одного экземпляра другому, но возникает проблема, когда я сопоставляю перечислимые типы этих типов, как в:
var dests = Mapper.Map<IEnumerable<Source>, Destination[]>(sources);
В этом случае AutoMapper вызывает конструктор Destination
для первого элемента, который должен быть отображен, но, очевидно, переходит к автоматическому сопоставлению остальных элементов. Автоматическое сопоставление вызывает исключение, поскольку свойства CreatedDate
с одинаковыми именами относятся к разным типам.
Если я изменю имя одного из свойств - скажем, Destination.Created
- конструктор вызывается для всех элементов, как и следовало ожидать.
Я использую последнюю версию AutoMapper (v1.1.0.188). Кажется, это ошибка, но, может быть, я что-то упустил?