2011-04-27 3 views
4

나는 둘러 보았고 내 질문에 대한 답을 찾을 수 없었다. 내가 뭘 찾고있는 조건부지도 대상 개체 (필드/속성, 개체가 아닌)입니다. 즉, 다음과 같은 것입니다 :AutoMapper - 조건부 매핑

public class Source 
{ 
    public int Id {get; set;} 
    public string Flag {get; set;} 
} 
public class Destination 
{ 
    public int Id {get; set;} 
} 

var sources = new List<Source> 
        { 
         new Source{Flag = "V", Id = 1}, 
         new Source{Flag = "B", Id = 2} 
        }; 

var destinations = Mapper.Map<List<Source>, List<Destination>>(sources); 

destinations.Count.ShouldEqual(1); 
destinations[0].Id.ShouldEqual(2); 

누구든지 형식 매핑을 구성하는 방법을 알고 있습니까? 다음과 같은 것을 찾고 있습니다.

Mapper.CreateMap<Source, Destination>() 
    .SkipIf(src => src.Flag != "B"); 

이 옵션을 지원하는 구성 옵션에는 아무것도 표시되지 않습니다. 어떤 도움을 많이 주시면 감사하겠습니다! 미리 감사드립니다.

답변

6

AFAIK 현재이 기능을 구현할 수있는 내장 기능은 없습니다. 당신은 비록 다음 작업을 수행 할 수 있습니다 : 이것은 당신이 효과적으로 매핑 자신을 일을 끝으로 크지 않다 ....하지만 예외적 인 경우에 대한 확인 및 매핑 로직이 내부적으로 포함 할 수 있습니다

var destinations = Mapper.Map<List<Source>, List<Destination>>(
    sources.Where(source => source.Flag == "B") 
); 
4

....

config.CreateMap<Source, Destination>() 
      .AfterMap((source, dest) => 
      { 
       if (source.Flag == "B") 
       { 
        //do stuff 
       } 
      });