Câu trả lời:
Sử dụng quá tải mất điểm đến hiện tại:
Mapper.Map<Source, Destination>(source, destination);
Vâng, nó trả về đối tượng đích, nhưng đó chỉ là cho một số tình huống tối nghĩa khác. Đó là cùng một đối tượng.
Để thực hiện công việc này, bạn phải tạo Bản đồ cho các loại nguồn và đích ngay cả khi chúng cùng loại. Điều đó có nghĩa là nếu bạn muốn
Mapper.Map<User, User>(user1, user2);
Bạn cần tạo bản đồ như thế này
Mapper.Create<User, User>()
Nếu bạn muốn sử dụng một phương thức IMapper, thay vì phương thức tĩnh được sử dụng trong câu trả lời được chấp nhận, bạn có thể thực hiện như sau (đã thử nghiệm 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
bây giờ sẽ được cập nhật với tất cả các giá trị thuộc tính src
mà nó chia sẻ. Các giá trị thuộc tính độc đáo của nó sẽ giữ nguyên.