2010-03-03 1 views

ответ

310

Используйте перегрузку, которая принимает существующее назначение:

Mapper.Map<Source, Destination>(source, destination); 

Да, он возвращает объект назначения, но это только для некоторых других малоизвестных сценариев. Это тот же объект.

+15

Спасибо, Джимми ... Я нарочно остался от AutoMapper, потому что я боялся кривой обучения воздействующего мое расписание. Я официально сожалею, что пробыл так долго ... это намного легче, чем я изначально думал. –

+6

Automapper должен быть одной из самых полезных библиотек. Я слишком долго избегал этого, слишком долго. Я начал использовать его сегодня и очень удивлен тем, насколько легко его использовать. – mcottingham

+3

Не работайте для меня. Я пытаюсь отобразить тот же тип, но он возвращает новый объект. Пользователь u1, u3 = новый Пользователь(); u1 = новый Пользователь { Id = 1, NickName = "vami" }; Пользователь u4 = Mapper.Map (u1, u3); Assert.AreEqual (u1.Id, u3.Id); Assert.AreEqual (u1.NickName, u3.NickName); –

10

Для выполнения этой работы у вас есть CreateMap для типов источников и получателей, даже они одного типа. Это означает, что если вы хотите Mapper.Map<User, User>(user1, user2); Вам нужно создать карту, как этот Mapper.Create<User, User>()

+0

Ha! Я только что нашел то же самое и добавил комментарий к принятому ответу. IMHO принятый ответ без вашего объяснения не является полным, но после моего комментария это может быть, наконец :) –

+0

Это отличное дополнение. Однако в исходном вопросе не упоминались типы источника и адресата и не требовалось, чтобы они были одного типа. – jpaugh

Смежные вопросы