I have a source DTO like this
public class Member
{
public string MemberId {get;set;}
public string MemberType {get;set;}
public string Name {g
Introduce some base class Member. Inherit PersonMember, CompanyMember from the new base class.
Then define these mappings:
cfg.CreateMap()
.ConstructUsing((memberDto, context) => {
switch (memberDto.MemberType)
{
case "PersonMember":
return context.Mapper.Map(memberDto);
case "CompanyMember":
return context.Mapper.Map(memberDto);
default:
throw new ArgumentOutOfRangeException($"Unknown MemberType {memberDto.MemberType}");
}
});
cfg.CreateMap()
.ForMember(dest => PersonMember.PersonMemberId,
opt => opt.MapFrom(src => src.MemberId));
cfg.CreateMap()
.ForMember(dest => CompanyMember.CompanyMemberId,
opt => opt.MapFrom(src => src.MemberId));
Now you can map using _mapperInstance.Map