Respostas:
Use a sobrecarga que leva o destino existente:
Mapper.Map<Source, Destination>(source, destination);
Sim, ele retorna o objeto de destino, mas isso é apenas para alguns outros cenários obscuros. É o mesmo objeto.
Para fazer isso funcionar, você deve criar o CreateMap para os tipos de origem e destino, mesmo que sejam do mesmo tipo. Isso significa que, se você quiser,
Mapper.Map<User, User>(user1, user2);
precisa criar um mapa como este
Mapper.Create<User, User>()
Se você deseja usar um método de instância do IMapper, em vez do método estático usado na resposta aceita, faça o seguinte (testado em 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
agora será atualizado com todos os valores de propriedade src
compartilhados. Os valores de suas propriedades exclusivas permanecerão os mesmos.