2016-11-30 2 views
0

나는 몇 가지 수업을하고는 다음과 같은 여러 목록 항목이 : 나는 Request2하지만 ApplicantData 목록이 AdditionalApplicantData하지만의 ApplicantData & 목록 목록과 같은 여러 소스에서 매핑 할 수 있습니다에 Request1를 매핑 할여러 목록을 단일 목록에 매핑하는 방법은 무엇입니까?

public class Request1 
{ 
    public List<AdditionalApplicantData> AdditionalApplicantData { get; set;} 

    public List<ApplicantData> ApplicantData { get; set; } 
} 

public class Request2 
{ 
    public List<ApplicantDetails> ApplicantData { get; set; } 
} 

그것을 달성하는 방법 누군가가 나를 도울 수 있는지 여기?

답변

0
public class ApplicantDetailsResolver : IValueResolver<Request1, Request2, List<ApplicantDetails>> 
{ 
    public List<ApplicantDetails> Resolve(Request1 source, Request2 destination,List<ApplicantDetails> destMember, ResolutionContext context) 
    { 
     destination.ApplicantDetails = context.Mapper.Map<List<ApplicantDetails>>(source.ApplicantData); 

     for (int i = 0; i < destination.ApplicantDetails.Count(); i++) 
     { 
      context.Mapper.Map(source.AdditionalApplicantData.ElementAt(i), destination.ApplicantDetails.ElementAt(i)); 
     } 

     return destination.ApplicantDetails; 
    } 
} 

이며, 그것은 다른 이름이되는 속성과 일치하지 수 ,이 시나리오도 처리 할 수있는 방법이 있습니까?

0

createMap() 기능과 함께 아래 기능을 사용할 수 있습니다. 출처 : https://github.com/AutoMapper/AutoMapper/wiki/Before-and-after-map-actions

.AfterMap((src, dest) => { 
    dest.ApplicantData = /*your logic here*/ 
    }); 

그리고 당신은 소스 클래스에서 ApplicantData라는 변수가 있기 때문에 당신이 don't map로 ApplicantData을 표시해야합니다. 논리를 직접 구현해야합니다.

EDIT : 매퍼를 초기화 할 때 각 개체에 대한 맵을 만듭니다. 같은 사건 것이 될 것이다 : 나는 여러 소스에서 매핑 목록에 대한 사용자 지정 값 해결 위에 쓴과 잘하지만 문제 작업

Mapper.Initialize(cfg => { 
    cfg.CreateMap<Request1, Request2>() 
    .ForMember(x => x.ApplicantData, opt => opt.Ignore()) //You want to implement your logic so ignore mapping 
    .AfterMap((src, dest) => 
     { 
      dest.ApplicantData = /*implement your logic here*/ 
     }); 
}); 
+0

미안하지만 내가 여기에서 당신을 따라갈 수 없으므로이 점에 대해 자세히 설명해 주시겠습니까? –

+0

내 대답을 편집하여 좀 더 자세하게 설명했습니다. – cokceken

+0

방금 ​​한 답변을 게시했는데 다르게 이름이 지정된 속성과 일치하도록 더 나은 제안을 한 적이 있습니까? –

관련 문제