我有一个 EntityDtos 的集合。
每个 EntityDto 都有一个名为 EntityType 的属性。
这些 EntityTypes 中的每一个都对应一个不同的子类,就像这样
abstract class EntityBase { EntityType = EntityType.Base; }
class EntityOne : EntityBase { EntityType = EntityType.One; }
class EntityTwo : EntityBase { EntityType = EntityType.Two; }
我正在尝试映射到 EntityBase 的集合。AutoMapper 失败并出现错误“无法创建抽象类的实例”。我有 Type 枚举,因此知道每个应该映射到什么类型......但实际上,只是希望它们都映射到我的 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>();