2010-12-08 4 views
4

AutoMapper를 사용하여 다른 개체의 속성 값을 기반으로 일부 속성을 조건부로 해결할 수 있습니까? 예를 들어, Source.Property를 Destination.Property에 매핑합니다. 여기서 ThirdObject.CountryCode.Equals ("SomeCountry").AutoMapper 세 번째 개체의 속성 값을 기준으로 대상의 속성 값을 확인합니다.

값이 DataReader에서 개체 목록으로 매핑되도록 현재 코드베이스가 설정됩니다. 그런 다음 ThirdObject.CountryCode에 특정 값이 있으면 대상 개체의 amount 속성에 배율을 곱해야합니다. 내가 그 길을 가기 전에 더 쉬운 방법이 바라고 있어요

Mapper.Map<IDataReader, Destination>(dataReader) 
     .OnCondition(ThirdObject.CountryCode.Equals("SomeCountry") 
     .ForMember(destination => destination.Amount) 
     .UpdateUsing(new Multiplier(fixedAmount)); 

:

현재, 내가 좋아하는 것을 함께 올라오고하여 문제를 해결 생각 해요. ResolveUsing에서

답변

3

봐 : 다음

Mapper.CreateMap<Journal_Table, Journal>() 
     .ForMember(dto => dto.Id, opt => opt.MapFrom(src => src.JournalId)) 
     .ForMember(dto => dto.Level, opt => opt.ResolveUsing<JournalLevelResolver>().FromMember(name => name.Journal_level)); 

:

public class JournalLevelResolver : ValueResolver<string, JournalLevel> 
{ 

    protected override JournalLevel ResolveCore(string level) 
    { 
     ... 
관련 문제