是否可以使用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));
我希望在走这条路之前有一种更简单的方法。
答案 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)
{
...