Automapper: à l'aide de BeforeMap et AfterMap
Je suis en utilisant automapper (avec succès jusqu'à un certain point) pour effectuer un polymorphe de la carte entre deux interfaces:
configure.CreateMap<IFrom, ITo>()
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
Cela fonctionne bien. En plus cependant, les interfaces comprennent les signatures de méthode, les implémentations qui sont destinés à modifier les objets avant de cartographie:
public interface IFrom
{
void PrepareForMapping();
}
Comme vous pouvez le voir, la méthode n'a pas de retour, mais qui est conçu pour modifier l'état de l'objet avant que la cartographie est effectuée. À l'heure actuelle, cette méthode est appelée manuellement avant que l'objet est mappé, mais mon intention était d'exécuter la méthode automatiquement avant de la cartographie. J'ai tenté de l'utiliser comme suit:
configure.CreateMap<IFrom, ITo>()
.BeforeMap((x,y) => x.PrepareForMapping())
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
Cependant, la méthode n'est jamais appelée, bien que la cartographie elle-même est encore à travailler. J'ai placé des points d'arrêt sur chaque mise en œuvre de la PrepareForMapping() la méthode et aucun d'entre eux sont touchés. Je suis donc venu à la conclusion que je n'ai ni mal comment BeforeMap/AfterMap de travail, ou je fais quelque chose de mal (ou les deux).
Merci beaucoup.
OriginalL'auteur Nigel | 2010-05-10
Vous devez vous connecter pour publier un commentaire.
Pour celui-ci, vous aurez à mettre de l'Avant/Après de la carte sur les types dérivés. C'est parce que Comprennent redirige la carte pour les types polymorphes. Ce n'est pas un additif de configuration, cartes Inclus remplacer la configuration.
OriginalL'auteur Jimmy Bogard