Odpowiedzi:
Użyj przeciążenia, które zabiera istniejące miejsce docelowe:
Mapper.Map<Source, Destination>(source, destination);
Tak, zwraca obiekt docelowy, ale dotyczy to tylko innych niejasnych scenariuszy. To ten sam obiekt.
Aby ta praca działała, musisz utworzyć mapę dla typów źródła i miejsca docelowego, nawet jeśli są one tego samego typu. Oznacza to, że jeśli chcesz,
Mapper.Map<User, User>(user1, user2);
musisz utworzyć taką mapę
Mapper.Create<User, User>()
Jeśli chcesz użyć metody instancji IMapper zamiast metody statycznej użytej w zaakceptowanej odpowiedzi, możesz wykonać następujące czynności (przetestowane w AutoMapper 6.2.2
)
IMapper _mapper;
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Destination>();
});
_mapper = config.CreateMapper();
Source src = new Source
{
//initialize properties
}
Destination dest = new dest
{
//initialize properties
}
_mapper.Map(src, dest);
dest
zostanie teraz zaktualizowany o wszystkie wartości właściwości, src
które zostały udostępnione. Wartości jego unikalnych właściwości pozostaną takie same.