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>();
现在这个字段是空的映射后
更简单的解决方案
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>();
参见映射继承