Kann jemand empfehlen, wie bedingte Zuordnung in AutoMapper verwendet wird, um einen Wert im TARGET-Objekt von einem SOURCE-Objekt basierend auf einem vorhandenen TARGET-Eigenschaftswert zuzuordnen?C# AutoMapper Bedingtes Mapping basierend auf dem Zielwert
Also meine Quellenklasse ist:
public class UserDetails
{
public String Nickname { get; set; }
}
Meine Zielklasse ist:
public class ProfileViewModel
{
public Boolean NicknameIsVisible { get; set;
public String Nickname { get; set; }
}
ich den „Nickname“ Eigenschaftswert in dem TARGET setzen möge den „Nicknamen“ Eigenschaftswert übereinstimmen in der SOURCE nur, wenn die Zieleigenschaft "NicknameIsVisible" bereits auf TRUE gesetzt ist, ansonsten möchte ich den TARGET-Attributwert "Nickname" auf eine leere Zeichenfolge setzen.
Ich war so etwas wie dies versuchen (das wird nicht kompilieren) ...
Mapper.CreateMap<UserDetails, ProfileViewModel>()
.ForMember(
destination => destination.Nickname,
option => option.
.MapFrom(
source => source.NicknameIsVisible ?
source.Nickname :
String.Empty)
);
aber „NicknameIsVisible“ ist keine Eigenschaft von meiner Quelle aber meiner TARGET.
BTW, Mein ProfileViewModel ist an drei Entitäten mit Owain Wragg Methode (http://consultingblogs.emc.com/owainwragg/archive/2010/12/22/automapper-mapping-from-multiple-objects.aspx) gebunden und es ist eine andere Entität, die den Wert der "NicknameIsVisible" -Eigenschaft gibt.
Bitte kann jemand vorschlagen die richtige Syntax für dieses Problem zu verwenden?
Ich denke, es kann sein, weil die Eigenschaft nicht im Ziel festgelegt wurde, so kann es nicht verwendet werden. Ich werde wahrscheinlich meine Mapping-Reihenfolge ändern müssen, um das zu erreichen, was ich benötige. Ich werde mit meinen Ergebnissen zurückführen. – Dib
Lassen Sie uns wissen, wie Sie gehen, würde mich interessieren, was Sie finden. – devduder
Ok, werde ich tun. Hoffentlich werde ich heute Abend daran arbeiten. – Dib