У меня есть коллекция EntityDtos.AutoMapper и базовые типы
Каждое свойство EntityDto имеет свойство EntityType.
Каждый из этих EntityTypes соответствуют различным подклассу, что-то вроде этого
abstract class EntityBase { EntityType = EntityType.Base; }
class EntityOne : EntityBase { EntityType = EntityType.One; }
class EntityTwo : EntityBase { EntityType = EntityType.Two; }
Я пытаюсь сопоставить коллекции EntityBase. Ошибка AutoMapper с ошибкой «Экземпляры абстрактных классов не могут быть созданы». У меня есть перечисление типа, и, следовательно, знаю, какой тип должен быть сопоставлен каждому ... но на самом деле просто хочу, чтобы все они были отображены в мою коллекцию EntityBase.
Я не могу понять это ...
У меня есть это работает, но это очень некрасиво.
Mapper.CreateMap<EntityCollectionDto, EntityCollection>().ForMember(
s => s.Entities, d => d.MapFrom(
x => new List<EntityBase>(
from p in x.Entitys
select p.EntityType == EntityType.One ? Mapper.Map<EntityOne>(p) as EntityBase
: p.EntityType == EntityType.Two ? Mapper.Map<EntityTwo>(p) as EntityBase
: Mapper.Map<EntityThree>(p) as EntityBase
)
)
);
Mapper.CreateMap<EntityDto, EntityOne>();
Mapper.CreateMap<EntityDto, EntityTwo>();
Согласен, я изучу его изменение. Благодарю. – CaffGeek