Ответы:
Используйте перегрузку, которая принимает существующее назначение:
Mapper.Map<Source, Destination>(source, destination);
Да, он возвращает целевой объект, но это только для некоторых других непонятных сценариев. Это тот же объект.
Чтобы сделать это, вы должны создать CreateMap для типов источника и назначения, даже если они одного типа. Это означает, что если вы хотите,
Mapper.Map<User, User>(user1, user2);
вам нужно создать карту, как это
Mapper.Create<User, User>()
Если вы хотите использовать метод экземпляра IMapper, а не статический метод, используемый в принятом ответе, вы можете сделать следующее (проверено в 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
теперь будет обновлено со всеми значениями свойств из того, src
что он поделился. Значения его уникальных свойств останутся прежними.