2017-11-15 1 views
1

Ich versuche, Automapper Änderung dsetination Wert nur zu machen, wenn es gleich einem bestimmten Wert ist. Es ist mir egal, was der Quellwert ist. Ich möchte nur den Zielwert vor dem Mapping sehen und wenn er gleich 0 ist, dann möchte ich das Mapping machen, wenn es> 0 ist, dann will ich das nicht abbilden.Verwenden automapper Zielwert nur ändern, wenn es gleich 0 ist

Bis jetzt kann ich nur mit einer Methode kommen, die dies tut, aber umgekehrt. Es untersucht die Quelle und ob der Quellwert die Bedingung erfüllt, die er abbilden wird. Sieht wie folgt aus:

CreateMap<SurveyResource, Survey>() 

      .ForMember(dest => dest.ClientId, opt => 
      { 
        opt.Condition(src => src.ClientId == 0); 
        opt.MapFrom(src => src.ClientId); 
      }); 

Dies als SurveyResource ClientId Wert aussehen wird und wenn es gleich 0 ist, dann wird es 0 in das Ziel einfügen (. Dh Stromquelle Wert von Client-ID einfügen wird). Weiß jemand, wie man das anders herum macht? Muss ich benutzerdefinierte Wertlöser verwenden?

Antwort

1

Mann, du bist so geschlossen!

CreateMap<SurveyResource, Survey>() 

     .ForMember(dest => dest.ClientId, opt => 
     { 
       opt.Condition((src, dest) => dest.ClientId == 0);// suppose dest is not null. 
       opt.MapFrom(src => src.ClientId); 
     }); 
Verwandte Themen