AutoMapper在子类中使用父类映射

时间:2016-09-01 09:25:57

标签: c# automapper

我有两个家长班

class Settings
{
     public Field
}

class SettingsDb
{
    public  FieldDB
}

和ForMember表达式的字段映射宽度FieldDB

CreateMap<SettingsDb, Settings>()
                 .ForMember(dest => dest.Field,
                 opt => opt.MapFrom(src => some lambda with src.FieldDb));

我还有两个子课程

class AdminSettings : Setting
{
inherits Field
}

class AdminSettingsDb : SettingDb
{
inherits FieldDb
}

如何在不继续为此继承字段执行ForMember的情况下,使用AdminSettingsDb映射AdminSettings?

CreateMap<AdminSettings, AdminSettingsDb>(); 

现在这些字段在映射

后为空

2 个答案:

答案 0 :(得分:2)

更简单的解决方案

   CreateMap<BaseEntity, BaseDto>()
       .ForMember(dest => dest.SomeMember, opt => opt.MapFrom(src => src.OtherMember));

    CreateMap<DerivedEntity, DerivedDto>()
        .IncludeBase<BaseEntity, BaseDto>();

答案 1 :(得分:1)

将子类包含在父级的映射中。

CreateMap<SettingsDb, Settings>()
    .Include<AdminSettings, AdminSettingsDb>()
    .ForMember(dest => dest.Field,
             opt => opt.MapFrom(src => some lambda with src.FieldDb));

CreateMap<AdminSettings, AdminSettingsDb>(); 

请参阅Mapping inheritance