如何在AutoMapper中使用自定义逻辑映射其他属性的属性?

时间:2019-11-27 11:34:18

标签: c# automapper

在手动映射中,我可以执行以下操作:

//LINQ Query here...
.Select(x => new ViewModel
{
    BooleanProperty = x.OtherProperty > 3
})
如果OtherProperty为4或更大,则

BooleanProperty将为true,否则为false。我一直无法弄清楚如何在AutoMapper中执行此操作。我尝试了以下方法:

.ForMember(dest => dest.BooleanProperty, opt => opt.ResolveUsing(src => src.OtherProperty > 3))

.ForMember(dest => dest.BooleanProperty, opt => opt.MapFrom(src => src.OtherProperty > 3))

.ForMember(dest => dest.BooleanProperty, opt => opt.ResolveUsing<BooleanPropertyResolver>())

BooleanPropertyResolver:

public class CustomResolver : IValueResolver<Address, AddressFormViewModel, bool>
{
    public bool Resolve(Address source, AddressFormViewModel destination, bool member, ResolutionContext context)
    {
        return source.OtherProperty > 3;
    }
}

对于所有其他方法,当OtherProperty为4时,BooleanProperty仍为false。如何在AutoMapper顶部的手动映射中复制功能?

0 个答案:

没有答案
相关问题