我如何使用Automapper更新另一个对象的属性值而不创建新对象?
使用接受现有目标的重载函数:
Mapper.Map<Source, Destination>(source, destination);
是的,它返回目标对象,但这只是一些其他晦涩场景的情况。 它是相同的对象。
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
共享的所有属性值。其独特属性的值将保持不变。
AutoMapper.Mapper.Map(sourceObject, destinationObject);