У меня есть класс назначения, который выглядит так:
public class CustomerAddressSummary
{
public string StateTxt { get; set; }
public string AddrLn1 { get; set; }
public string AddrLn2 { get; set; }
public string Phn { get; set; }
public string HomePhnNbr { get; set; }
public string MobilePhnNbr { get; set; }
public string WorkPhnNbr { get; set; }
public string EmailAddr { get; set; }
}
И исходный класс:
public class CustomerAddressSummaryObj
{
public ADDRESS Address { get; set; }
public List<COMMUNICATION> Communications { get; set; }
public string StateTxt { get; set; }
}
Вот отображение:
CreateMap<CustomerAddressSummaryObj, CustomerAddressSummary>()
.ForMember(dest => dest.StateTxt, opt => opt.MapFrom(src => src.StateTxt))
.ForMember(dest => dest.AddrLn1, opt => opt.MapFrom(src => src.Address.ADDRLN1))
.ForMember(dest => dest.AddrLn2, opt => opt.MapFrom(src => src.Address.ADDRLN2));
CreateMap<COMMUNICATION, CustomerAddressSummary>()
.ForMember(dest => dest.Phn,
opt => opt.MapFrom(src => src.TYPECD == Constant.CommunicationTypeCode.Main ? src.DETAILS : null))
.ForMember(dest => dest.EmailAddr,
opt => opt.MapFrom(src => src.TYPECD == Constant.CommunicationTypeCode.Email ? src.DETAILS : null))
.ForMember(dest => dest.HomePhnNbr,
opt => opt.MapFrom(src => src.TYPECD == Constant.CommunicationTypeCode.Home ? src.DETAILS : null))
.ForMember(dest => dest.MobilePhnNbr,
opt => opt.MapFrom(src => src.TYPECD == Constant.CommunicationTypeCode.Mobile ? src.DETAILS : null))
.ForMember(dest => dest.WorkPhnNbr,
opt => opt.MapFrom(src => src.TYPECD == Constant.CommunicationTypeCode.Work ? src.DETAILS : null));
Реализация:
var customerAddress = _mapper.Map<CustomerAddressSummary>(customerAddressSummaryObj);
Заполняет всю информацию, кроме COMMUNICATION
. Поэтому я попробовал что-то вроде этого:
var customerAddress = _mapper.Map<CustomerAddressSummary>(customerAddressSummaryObj)
.Map(customerAddressSummaryObj.Communications,_mapper);
public static TDestination Map<TSource, TDestination>(this TDestination destination, TSource source, IMapper mapper)
{
return source == null ? destination : mapper.Map(source, destination);
}
Но это также не работает и создает исключение. Есть идеи, что мне здесь не хватает?