12
votes

MODApper - Carte en utilisant les mêmes types d'objets de source et de destination

J'utilise automapper pour prendre deux objets du même type et mapper toutes les nouvelles valeurs qui ont changé. J'ai essayé d'utiliser le code ci-dessous, mais cela continue de lancer une erreur et je ne suis même pas sûr que cela puisse même être atteint avec la consomapper.

Par exemple: P>

        Mapper.CreateMap<UserDetails, UserDetails>();
        UserDetails userDetails = Mapper.Map<UserDetails, UserDetails>(userDetailsCurrent, userDetailsNew);


3 commentaires

Si mapper.map renvoie un userDétails ou un usersession ?


Il devrait renvoyer userDétails - ive vient de mettre à jour l'échantillon de code.


Quelle erreur est lancée?


3 Réponses :


10
votes

Cela semble fonctionner pour moi. Mon type personnalisé: xxx

mon code de cartographie: xxx

Qu'est-ce qui est intéressant de votre type personnalisé au-delà des propriétés simples? < / p>


4 commentaires

Ceci semble bon - je ne suis pas près de mon PC si mal vérifie cela et récupérez dès que possible!


Y a-t-il une façon de pouvoir le faire sans utiliser le formulaire ()? Il pourrait être plus propre de ne pas le faire pour chaque propriété de l'objet.


Oui, cela fonctionne toujours si vous ne faites pas le formidable. Je suis tellement habitué à utiliser ceux que je l'ai initialement inclus.


Presque là-bas, mais y a-t-il un moyen qui me permet de conserver les valeurs existantes sur l'objet de destination. Tels que "userDetails userDétails = mapper.map (userDétailsCurrent, userDétailsNouveau);" Quand j'essaie que cela jette une erreur. Je dois conserver les valeurs et la carte existantes dans toutes les valeurs nouvelles entrantes.



7
votes

Ceci peut être fait à l'aide de tuples et en créant un convertisseur de type personnalisé dérivant de la classe Abstrée de typonverter d'Abstrait de MODApper.

Dites que vous avez eu une classe de source et de destination de: p>

Firstname: Cliff, Lastname: Mayson


0 commentaires

7
votes

Ceci est un comportement connu de MODAPPER ( Voir le problème ). Vous devez réellement dire à MODApper:

CreateMap<A,A>();
CreateMap<B,B>();
CreateMap<C,C>();


0 commentaires