【发布时间】:2012-12-18 18:20:42
【问题描述】:
假设我有这些映射:
var mapping1 = Mapper.CreateMap<Order, BaseDto>()
.ForMember(o => o.Referrer, m => m.Ignore());
var mapping2 = Mapper.CreateMap<Order, DetailDto>()
.ForMember(o => o.Price, m => m.Ignore());
var mapping3 = Mapper.CreateMap<Order, UpdateDto>()
.ForMember(o => o.Temp, m => m.Ignore());
Dtos 的继承:
DetailDto : BaseDto
UpdateDto : BaseDto
有没有办法将第一个映射合并/组合成mapping2和mapping3?
类似这样的:
var mapping1 = Mapper.CreateMap<Order, BaseDto>()
.ForMember(o => o.Referrer, m => m.Ignore());
var mapping2 = Mapper.CreateMap<Order, DetailDto>()
.Import(mapping1);
.ForMember(o => o.Price, m => m.Ignore());
var mapping3 = Mapper.CreateMap<Order, UpdateDto>()
.Import(mapping1);
.ForMember(o => o.Temp, m => m.Ignore());
.Include 函数似乎没有做我想要的,因为以下不起作用:
var mapping1 = Mapper.CreateMap<Order, BaseDto>()
.Include<Order, DetailDto>()
.Include<Order, UpdateDto>()
.ForMember(o => o.Referrer, m => m.Ignore());
var mapping2 = Mapper.CreateMap<Order, DetailDto>()
.ForMember(o => o.Price, m => m.Ignore());
var mapping3 = Mapper.CreateMap<Order, UpdateDto>()
.ForMember(o => o.Temp, m => m.Ignore());
更新:编辑问题更具体
【问题讨论】:
-
为什么你不能这样做:var mapping1 = Mapper.CreateMap
() .ForMember(o => o.Referrer, m => m.Ignore())。 ForMember(o => o.Price, m => m.Ignore());? -
@Icarus 这有点复杂,因为映射有不同的目的地。我更新了问题。
标签: c# automapper-2