2010-03-03 4 views

Répondre

310

Utilisez la surcharge qui prend la destination existante:

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

Oui, il retourne l'objet de destination, mais c'est juste pour d'autres scénarios obscurs. C'est le même objet.

+15

Merci, Jimmy ... J'ai fait exprès évitaient AutoMapper parce que j'avais peur de la courbe d'apprentissage impact sur mon emploi du temps. Je suis officiellement désolé d'être resté si longtemps à l'écart ... c'est beaucoup plus facile que je ne le pensais au départ. –

+6

Automapper doit être l'une des bibliothèques les plus utiles sur le marché. Moi aussi, je l'ai évité pendant longtemps, beaucoup trop longtemps. J'ai commencé à l'utiliser aujourd'hui et je suis très surpris de la facilité d'utilisation. – mcottingham

+3

Ne fonctionne pas pour moi. J'essaye de mapper au même type, mais c'est un nouvel objet retourné. Utilisateur u1, u3 = nouvel utilisateur(); u1 = new Utilisateur { Id = 1, NickName = "vami" }; Utilisateur u4 = Mapper.Map (u1, u3); Assert.AreEqual (u1.Id, u3.Id); Assert.AreEqual (u1.NickName, u3.NickName); –

10

Pour que cela fonctionne, vous devez créer CreateMap pour les types de source et de destination, même s'ils sont du même type. Cela signifie que si vous voulez Mapper.Map<User, User>(user1, user2); Vous devez créer cette carte comme Mapper.Create<User, User>()

+0

Ha! Je viens de trouver la même chose et ajouté un commentaire à la réponse acceptée. IMHO la réponse acceptée sans votre explication n'est pas complète, mais après mon commentaire, il pourrait être, enfin :) –

+0

Ceci est un excellent ajout. Cependant, la question initiale ne mentionnait pas les types de la source et de la destination et n'exigeait pas qu'ils soient du même type. – jpaugh

Questions connexes