J'utilise automapper (avec succès jusqu'à un certain point) pour réaliser une carte polymorphes entre deux interfaces comme ceci:Automapper: en utilisant BeforeMap et AfterMap
configure.CreateMap<IFrom, ITo>()
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
Cela fonctionne très bien. En outre, cependant, les interfaces comprennent les signatures de méthode, que les mises en œuvre de destinées à modifier les objets avant la cartographie:
public interface IFrom
{
void PrepareForMapping();
}
Comme vous pouvez le voir la méthode n'a pas de retour, mais est conçu pour modifier l'état de l'objet avant la cartographie est effectuée. À l'heure actuelle, cette méthode est appelée manuellement avant que l'objet soit mappé, mais mon intention était d'exécuter la méthode automatiquement avant que le mappage ait lieu. J'ai essayé de l'utiliser comme suit:
configure.CreateMap<IFrom, ITo>()
.BeforeMap((x,y) => x.PrepareForMapping())
.Include<FromImplementation1, ToImplementation1>()
.Include<FromImplementation2, ToImplementation2>()
... ;
Cependant, la méthode est jamais appelée, bien que la cartographie elle-même fonctionne toujours bien. J'ai placé des points d'arrêt sur chaque implémentation de la méthode PrepareForMapping() et aucun d'entre eux n'est touché. Je suis donc arrivé à la conclusion que j'ai mal compris comment fonctionne BeforeMap/AfterMap, ou que je fais quelque chose de mal (ou les deux).
Merci beaucoup.