Відповіді:
Використовуйте перевантаження, яке приймає існуюче місце призначення:
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
якими він поділився. Значення його унікальних властивостей залишаться однаковими.