12
votes

Carte Type complexe sur Type Flat dans Automapper

J'ai un objet complexe comme: xxx pré>

Je veux mapper ceci sur le type plat: p> xxx pré>

J'ai déjà configuré automapper code> pour TradingDesk code>: p> xxx pré>

de sorte que le test suivant passe: p> xxx Pré>

Mais lorsque j'essaie de cartographier businessunit code> à rangée code> je dois reconfigurer automapper code> pour tradingdesk code> En tant que tel: P>

CreateMap<BusinessUnit, Row>()
   .ForMember(vm => vm.TradingDeskName, op => op.MapFrom(src => src.TradingDesk.Name))
   .ForMember(vm => vm.TraderFirstName, op => op.MapFrom(src => src.TradingDesk.Trader.FirstName))
   .ForMember(vm => vm.TraderLastName, op => op.MapFrom(src => src.TradingDesk.Trader.LastName));


0 commentaires

3 Réponses :


1
votes

La syntaxe réelle peut différer car j'utilise automapper de manière statique, mais le principe reste le même: xxx


2 commentaires

Mais je n'ai pas d'instance imapper créée à partir de la configuration là-bas; Donc, votre code souffle avec AutomApperMappingException


En regardant Cet article , vos options pourraient être limitées si vous ne comptez pas sur le mappeur statique



0
votes

Tout d'abord, je pense que votre carte pour le bureau de trading serait juste xxx

si la mémoire me sert à droite, car votre membre de destination correspond à un nom de membre source quand ". ' sont supprimés alors vous n'avez pas besoin de spécifier explicitement.

Si vous modifiez la classe de votre ligne vers cette xxx

Votre carte serait xxx

Si vous n'allez jamais mapper vers TradingDesk, supprimez cette carte.

Si ceci est défini dans un profil, vous pouvez également dire < Pré> xxx

Et puis vous n'avez pas besoin de changer de classe de ligne.


0 commentaires

0
votes

Si vous ne souhaitez pas créer de convertisseurs spéciaux ou de résolveurs de propriété, vous pouvez effectuer le deuxième mappage après la carte de l'objet principal, par exemple: xxx

dans ce cas, l'objet a été mappé sans créer une nouvelle instance.


0 commentaires