AutoMapper在子类中使用父类映射

本文关键字:父类 映射 子类 AutoMapper | 更新日期: 2023-09-27 18:05:19

我有两个父类

class Settings
{
     public Field
}

class SettingsDb
{
    public  FieldDB
}

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

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
}

我怎么能映射AdminSettings与AdminSettingsDb不做此继承字段再次记住?

CreateMap<AdminSettings, AdminSettingsDb>(); 

现在这个字段是空的映射后

AutoMapper在子类中使用父类映射

更简单的解决方案

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

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

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

参见映射继承