Réponses:
Utilisez la surcharge qui prend la destination existante:
Mapper.Map<Source, Destination>(source, destination);
Oui, il renvoie l'objet de destination, mais c'est juste pour certains autres scénarios obscurs. C'est le même objet.
Pour que cela fonctionne, vous devez créer une carte pour les types de source et de destination, même s'ils sont du même type. Cela signifie que si vous le souhaitez,
Mapper.Map<User, User>(user1, user2);
vous devez créer une carte comme celle-ci.
Mapper.Create<User, User>()
Si vous souhaitez utiliser une méthode d'instance d'IMapper, plutôt que la méthode statique utilisée dans la réponse acceptée, vous pouvez faire ce qui suit (testé dans 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
sera désormais mis à jour avec toutes les valeurs de propriété de src
celui qu'il a partagé. Les valeurs de ses propriétés uniques resteront les mêmes.