Antworten:
Verwenden Sie die Überlastung, die das vorhandene Ziel übernimmt:
Mapper.Map<Source, Destination>(source, destination);
Ja, es gibt das Zielobjekt zurück, aber das gilt nur für einige andere obskure Szenarien. Es ist das gleiche Objekt.
Damit dies funktioniert, müssen Sie CreateMap für Quell- und Zieltypen erstellen, auch wenn diese vom selben Typ sind. Das heißt, wenn Sie möchten, müssen
Mapper.Map<User, User>(user1, user2);
Sie eine Karte wie diese erstellen
Mapper.Create<User, User>()
Wenn Sie anstelle der in der akzeptierten Antwort verwendeten statischen Methode eine Instanzmethode von IMapper verwenden möchten, können Sie Folgendes tun (getestet in 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
wird nun mit allen Eigenschaftswerten aktualisiert, die von src
ihm gemeinsam genutzt wurden. Die Werte seiner einzigartigen Eigenschaften bleiben gleich.