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>();