Привет, ребята, я использую automapper версия 1.1.0.188
В моем AutoMapper.Configure я отображаю сущности в DTO и наоборот, вот так:
// entity >> DTO
Mapper.CreateMap<MetaTemplate, MetaTemplateDTO>();
Mapper.CreateMap<Person, PersonDTO>();
// DTO >> Entity
Mapper.CreateMap<MetaTemplateDTO, MetaTemplate>();
Mapper.CreateMap<PersonDTO, Person>();
Когда я делаю приведенные ниже сопоставления (и наоборот), все работает нормально
Mapper.Map<entity, entityDTO>(entity);
Mapper.Map<List<entity>, List<entityDTO>>(entities);
Обратите внимание, что automapper просто работает со List <>, и мне не нужно ничего настраивать.
У меня есть универсальный контейнер (упрощенно для этого примера):
public class Container<T>
{
public int TotalItems{get;set;}
public IList<T> Items{get;set;}
}
Теперь, без каких-либо дополнительных настроек автоматической настройки, когда я делаю:
Mapper.Map<Container<entity>, Container<entityDTO>>(entityContainer);
Я получаю исключение автомата:
Отсутствует конфигурация карты типов или неподдерживаемое отображение. Исключение
Однако, если я добавлю эту строку в конфигурацию автонастройки для определенного типа, как показано ниже, тогда отображение контейнера будет работать.
Mapper.CreateMap<Container<PersonDTO>, Container<Person>>();
Однако он будет работать ТОЛЬКО для этого типа Person / PersonDTO.
Почему это? Как я могу заставить autopper распознавать класс Container, поскольку он распознает List <> ??
Я не хочу явно настраивать сопоставления для каждого типа СНОВА.
круто, ура