Je dois faire un objet d'objet pour mentir le mappage entre les classes de domaine utilisés dans un projet C # et les classes envoyées aux clients Flash.
Mon premier choix était FaSTApper. Mais j'ai eu des problèmes avec elle (propriétés imbriquées, aucun constructeur sans paramètre défini). Il s'avère que ce n'est pas si facile de cartographier un type vraiment complexe avec Comtableapper. P>
Pourquoi ne pas mettre en œuvre des méthodes telles que ci-dessous? P>
ClassA GetClassAByClassB(ClassB pObj) { ClassA objA = new ClassA(); objA.Prop1 = pObj.Prop1; objA.NestedType.Prop2 = pObj.Prop2; //....Some more..... return objA; }
3 Réponses :
Parce que avec STORPAPPER VOUS Votre approche nécessite d'écrire beaucoup de p> COMASPAPPER utilise des conventions pour le comprendre lui-même. Quoi de plus, vous n'avez pas à vous soucier de Vous pouvez également définir des conversions sur votre carte (c.-à-d. String sur DateTime). P> POBJ == null code> (votre code lancera
NullReferenceException code> dans ce cas). p>
Mapper.CreateMap<User, UserModel>().ForMember(d => d.LastLogin, c => c.MapFrom<DateTime?>(u => u.Credential.LastLogin));
Qu'en est-il des propriétés qui n'ont pas les mêmes noms? Et propriétés imbriquées? Je pense que je devrais changer de conventions, mais parfois la propriété d'un côté est "positionnelle" et sur son autre côté juste "x". (juste un exemple - les propriétés des anmes pourraient être assez imprévisibles). Donc, cela n'est-il pas comme si je ne devrais pas utiliser mon automapper dans mon cas?
@Katalonis - Ensuite, vous configurez le mappeur de la manière sécurisée de type à l'aide de Lambdas. Ajout d'un échantillon de code et d'un lien.
Parcours Flip Side est que si vous voyez plus dest.myprop, opt => opt.ignore () code> ou
doss.myprop, opt => opt.mapfrom (SRC => Transformation (SRC. MyProp)) code> que vous n'avez gagné par la voiture, c'est moins formidable. Ou, comme ANK2K11 pointe , méfiez-vous lorsque la carte par magie-string-convention tombe sur sa face. Xiaoguo hits clou sur sa tête : " lorsque vos classes s'alignent classiquement b>, votre La configuration de mappage peut être aussi simple i> ". Sinon, vous sont I> Mise en œuvre de ces méthodes, juste avec SUR FABORAPPER.
Le seul avantage que les réclamations de MOWERAPPER sont de la cartographie par convention. Voici une citation de "Introduction et échantillons" automapper "
ici réside la beauté de la FadifPPER. Quand vos classes alignent eux-mêmes conventionnellement, votre configuration de mappage peut être aussi SIMPLE P> blockQuote>
Cela vient avec un coût. Renommer ou modifier la cible ou le nom de la propriété source brisera la cartographie et introduisez un bogue d'exécution. P>
Si vous n'utilisez pas de cartographie par convention, MOWORAPPPER perd son avantage. Dans ce cas, je préférerais écrire une fonction d'usine comme celle-ci. P>
xxx pré> alors vous construiriez l'objet de destination comme p>
xxx pré > au lieu de p>
xxx pré> personnellement, je préférerais une fonction d'usine pour sa explicite, sa lisibilité et sa convivialité de débogage. Bonne chance à essayer de savoir, dans le second cas, comment
classb code> est mappé sur
classa code>, si le profil de mappage est chargé ou pourquoi il y a une exception lorsque le < Code> Carte <> () Code> La fonction est appelée ou pourquoi certaines des propriétés ont été attribuées de mauvaises valeurs. p> p>
Parfois à l'aide de mappeurs, il est très difficile de tracer les bugs. Par exemple, par exemple, si nous manquons d'employé en classe de données avec Emplyee dans la classe de modèle, des mappeurs tels que de minuscules mappers ne jettent aucune exception à moins que nous définissons explicitement les mappeurs comme une cartographie stricte et que ce code temporel compile et se déroule parfaitement, mais nous sommes parfaitement Impossible de tracer des erreurs. Cette situation arrive rarement avec la cartographie manuelle. La cartographie manuelle des objets a donc des avantages par rapport à la cartographie automatique. P>