Entweder ich nicht, oder es funktioniert nicht ... Ich habe eine einzelne Quellklasse, die ich mehreren Ansichten zuordnen möchte, die voneinander erben.
Grundsätzlich ist die Basisklasse das Detail, und die Kindklasse ist Bearbeiten oder Aktualisieren, die dieselben Daten wie Detail verwenden, sowie ein paar andere Felder, um ihre eigenen Listen oder was auch immer zu verwalten.
Hier sind die Karten, die ich benutze:
%Vor%Dann, wenn ich Mapper.Map (Ticket) eine der Eigenschaften, die MapFrom verwenden, nicht ausgewertet werden, werden sie nur mit den Werten enden, die sie gehabt hätten, wenn es keine festgelegte Zuordnung gegeben hätte.
Also, was ist hier falsch?
Als alternative Lösung, wenn Sie Mapper.Map
nicht zweimal aufrufen möchten. Sie können die allgemeinen Zuordnungen von Detail
in eine Erweiterungsmethode verschieben:
Verwenden Sie dann diese Erweiterungsmethode, wenn Sie die Mapper Ticket -> Update
und Ticket -> Edit
registrieren:
Dann können Sie Map normal verwenden:
%Vor%Benutze ich die Funktionalität von Automapper 2.0 Include richtig?
Nein - Wenn Sie .Include
verwenden, erwartet AutoMapper, dass sich die Zielklassen in einer ähnlichen Hierarchie wie die Quellklassen befinden (weitere Informationen hierzu finden Sie unter hier ). Mit anderen Worten, wenn Sie zu verschiedenen Unterklassen von Ticket
bis Detail
, Update
und Edit
zuordnen, wäre Include
geeignet.
Dies scheint in Ihrem Fall nicht hilfreich zu sein. Ich würde empfehlen, die Überladung von .Map
zu verwenden, die ein vorhandenes Objekt annimmt und modifiziert. Auf diese Weise müssen Sie nur ein Mapping für den Basistyp definieren:
Tags und Links c# automapper automapper-2