2012-06-11 3 views
1

지도 조건에 따라 소스 속성을 조건부 맵핑하는 방법이나 해결 방법을 아는 사람이 있습니까?Automapper 조건부 컬렉션 매핑

목적은 웹 서비스 작업 매개 변수를 기반으로 하위 개체 컬렉션을 조건부로 매핑하는 것입니다. 예를 들면 :

Parent GetParent(bool includeChildren); 

내가 찾은 유일한 가능한 솔루션처럼, 부울 속성을 추가하기 위해 포장 클래스를 만드는 중 하나였다 지금까지 :

public class ParentMapper 
{ 
    Parent Parent; 
    public bool IncludeChildren {get;set;} 
} 

또는에 직접 IncludeChildren 속성을 추가 할 수 모델 소스 클래스, 마녀 정말 목적을 혼합 때문에 좋아하지 않아.

완벽한 솔루션은 같은 것입니다 :

TDestination Map<TSource, TDestination>(TSource source, bool includeCollections); 

을하지만 난 그위한 효율적인 솔루션으로 어떤 행운을 얻을 것이다 생각하지 않습니다.

어떤 도움을 주시면 감사하겠습니다 ...

답변

0

현재 아무것도 내장 당신이 이것을 달성 할 수 없다. 당신은 비록 다음 작업을 수행 할 수 있습니다 :

var destinations = Mapper.Map<List<Parent>, List<ParentDto>>(
    sources.Where(source => source.Child !=null) 
); 

이 일을하는 또 다른 방법은 다음과 같습니다

config.CreateMap<Parent, ParentDto>() 
      .AfterMap((source, dest) => 
      { 
       if (source.Child !=null) 
       { 
        //do some stuff here 
       } 
      }); 
+0

@gjsduarte, 당신이 내 대답을 시도 했습니까? –