我正在尝试使用AutoMapper将两个不同的输入合并为一个输出。
List<MerchantListViewModel> merchants = new List<MerchantListViewModel>();
var regularMerchants = Mapper.Map<List<Discount>, List<MerchantListViewModel>>(result.RegularDiscounts);
var specialMerchants = Mapper.Map<List<Discount>, List<MerchantListViewModel>>(result.OurSpecialDiscounts);
merchants.AddRange(regularMerchants);
merchants.AddRange(specialMerchants);
return merchants;
public class MerchantListViewModel
{
...
public bool IsSpecialDiscount { get; set; }
}
我希望在第二个地图出现时将MerchantListViewModel上的标志设置为IsSpecialDiscount为true。第一个地图会将其设置为false或不设置它。有办法吗? 我将Legacy代码映射到新的ViewModel,这是此要求的来源。我没有选择从我给出的两个列表中更改遗留代码。
提前致谢!
答案 0 :(得分:0)
您可以按https://github.com/AutoMapper/AutoMapper/wiki/Before-and-after-map-actions使用.AfterMap()
操作我不确定您的对象的值,因此您可能会或可能无法在您的配置中执行此操作。在映射期间执行操作大致相当于使用注释中所述的LINQ .ForEach()
。您也可以选择滚动自己的ValueResolver
类https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers