Mam dwie jednostki i dwa DTO. Mapuję podmioty do DTO. Uproszczone wersje DTOs wyglądać następująco:Jak korzystać z mapy po mapowaniu właściwości kolekcji?
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; }
}
W Foo
i Bar
klasy są:
public class Foo {
public ICollection<Bar> Bars { get; set; }
}
public class Bar {
// Unimportant properties
}
Mapowanie
mam mapowanie to w sposobie, jak:
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 ma już odwzorowania skonfigurowane dla Foo do FooDto i Bar na BarDto, które działają poprawnie.
Muszę zaktualizować każdy BarDto w FooDto, korzystając z usługi (powody, dla których są zbyt długie, aby przejść do - wystarczy powiedzieć, że musi się tak stać).
Co składnia muszę używać w AfterMap
mapować każdy Total
własność BarDto
używając metody _barTotalService.CalculateTotal(bar)
, gdzie bar
jest Bar
w pytaniu?
Należy pamiętać, że metoda _barTotalService.CalculateTotal
przyjmuje instancję Bar
, a nie BarDto
.
'Total' jest własnością' BarDto'. 'FooDto.Bars' nie może mieć właściwości. Również w jaki sposób jest przekazywane 'bar' w' _barTotalService.CalculateTotal (bar) '? –
'FooDto' ma kolekcję o nazwie' Bars' typu 'BarDto'. Z kolei każde 'BarDto' ma właściwość o nazwie' Total'. Muszę ustawić tę właściwość 'Total' używając instancji' Bar' zawartych w oryginalnym obiekcie 'Foo', który jest mapowany. – Graham