Tôi có hai thực thể và hai DTO. Tôi đang lập bản đồ các thực thể cho các DTO. phiên bản đơn giản của DTOs trông giống như:Cách sử dụng AfterMap để ánh xạ các thuộc tính trên thuộc tính sưu tập
public class FooDto {
// Other properties removed for clarity.
public string Description { get; set; }
public decimal Total { get; set; }
public ICollection<BarDto> Bars { get; set; }
}
public class BarDto {
// Other properties removed for clarity.
public decimal Total { get; set; }
}
Các Foo
và Bar
lớp là:
public class Foo {
public ICollection<Bar> Bars { get; set; }
}
public class Bar {
// Unimportant properties
}
Các Mapping
Tôi đang lập bản đồ này trong một phương pháp như:
public FooDto Map(IMapper mapper, Foo foo) {
// _fooTotalService and _barTotalService injected elsewhere by DI.
return mapper.Map<Foo, FooDto>(foo, opt =>
{
opt.AfterMap((src, dest) =>
{
dest.Total = _fooTotalService.GetTotal(src);
dest.Bars.Total = ?????? // Needs to use _barTotalService.CalculateTotal(bar)
});
});
}
AutoMapper đã có ánh xạ được định cấu hình cho Foo thành FooDto và Bar thành BarDto đang hoạt động tốt.
Tôi cần phải cập nhật từng BarDto trong FooDto với tổng số sử dụng một dịch vụ (lý do quá dài để đi vào - đủ để nói rằng nó cần phải xảy ra theo cách này).
cú pháp gì tôi cần phải sử dụng trong AfterMap
để ánh xạ mỗi Total
tài sản của BarDto
sử dụng phương pháp _barTotalService.CalculateTotal(bar)
, nơi bar
là Bar
trong câu hỏi?
Lưu ý rằng phương pháp _barTotalService.CalculateTotal
có phiên bản Bar
không phải BarDto
.
'Total' là một tài sản của 'BarDto'. 'FooDto.Bars' không thể có thuộc tính. Ngoài ra, 'thanh' được chuyển trong' _barTotalService.CalculateTotal (thanh) 'như thế nào? –
'FooDto' có một bộ sưu tập có tên là 'Bars' của loại' BarDto'. Đổi lại, mỗi 'BarDto' có một thuộc tính gọi là' Total'. Tôi cần thiết lập thuộc tính 'Total' này bằng cách sử dụng các thể hiện của' Bar' chứa trên đối tượng 'Foo' ban đầu đang được ánh xạ. – Graham