AutoMapper根据第三个对象的属性值解析目标上的属性值

时间:2010-12-08 14:25:23

标签: automapper

是否可以使用AutoMapper从源映射到目标,根据另一个对象的属性值有条件地解析某些属性?例如,将Source.Property映射到Destination.Property,其中ThirdObject.CountryCode.Equals(“SomeCountry”)。

设置当前代码库,以便将值从DataReader映射到对象列表。然后,如果ThirdObject.CountryCode具有特定值,则目标对象上的amount属性必须乘以乘数。

目前,我正在考虑通过以下方式解决问题:

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

我希望在走这条路之前有一种更简单的方法。

1 个答案:

答案 0 :(得分:3)

看看ResolveUsing:

    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)
    {
       ...