2010-03-17 5 views
3

AutomMapper를 사용하여 대상 유형에 매핑하려는 하나의 매우 일반적인 개체가 있지만 소스의 속성 값에 따라 다른 유형으로 매핑하려고합니다 유형. Source.Discriminator 경우 == Target.Value에 "A"와 Source.ValueB Source.Discriminator 경우 ==AutoMapper를 사용하여 판별 자 값을 기반으로 다른 속성에서 매핑

public class Source 
{ 
    public string Discriminator { get; } 
    public string ValueA { get; } 
    public string ValueB { get; } 
} 

public class Target 
{ 
    public string Value { get; set; } 
} 

그리고 Target.Value에 Source.ValueA를 매핑 할 : 예를 들어, 내가 가진 가정 해 봅시다 "비".

AutoMapper를 사용하면 가능합니까?

답변

2

당신은 다음과 같이 수행 할 수 있습니다

Mapper.Map<Spurce, Target>().ForMember(x => x.Value, x => x.MapFrom(y => { 
    if(y.Discriminator == "A") 
     return y.ValueA; 
    return y.ValueB; 
    }); 
+0

내가 할 수있는,하지만 난 가능하면 Automapper의 기능을 사용하고 싶습니다. 사실 여러 원본 필드와 여러 대상 필드가 있습니다. 이 방법을 사용하면 각 대상 멤버에 대해 여러 개의 if/else-statement를 추가해야합니다. 이는 원하는 대상이 아닙니다. – Karl

+0

@ Karl, 내가 여기서했던 것처럼 하드 코딩 할 필요가 없습니다. 당신은 당신의 관행에 기반한 반영을 사용할 수도 있습니다. –

+0

아, 맞습니다. 감사! – Karl

관련 문제