Automapper相同的源类,不同的输入。相同的输出。可能吗?

时间:2016-01-26 21:12:12

标签: c# automapper

我正在尝试使用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,这是此要求的来源。我没有选择从我给出的两个列表中更改遗留代码。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以按https://github.com/AutoMapper/AutoMapper/wiki/Before-and-after-map-actions使用.AfterMap()操作我不确定您的对象的值,因此您可能会或可能无法在您的配置中执行此操作。在映射期间执行操作大致相当于使用注释中所述的LINQ .ForEach()。您也可以选择滚动自己的ValueResolverhttps://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers