2010-12-08 11 views
4

AutoMapperを使用して、別のオブジェクトのプロパティ値に基づいて一部のプロパティを条件付きで解決することができますか?たとえば、Source.PropertyをDestination.Propertyにマッピングします(ThirdObject.CountryCode.Equals( "SomeCountry"))。AutoMapper第3のオブジェクトのプロパティ値に基づいて宛先のプロパティ値を解決します。

値が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) 
    { 
     ... 
関連する問題