2017-05-14 2 views
0

Ich muss leere Zeichenfolgen vom Quellmodell als Null zum Zielmodell zuordnen. Zuerst habe ich nächstes Profil hierfür:Wie werden leere Zeichenketten mit Automapper als null zugeordnet?

public class MyProfile:Profile 
{ 
    public MyProfile() 
    { 
     CreateMap<SrcModel, DestModel>() 
     .ForMember(dst => dst.Field1, opt => 
     { 
      opt.Condition(src => !string.IsNullOrEmpty(src.src_Field1)); 
      opt.MapFrom(src => src.src_Field1) 
     }) 
     //....... 
     //same for other 15 fields 
    } 
} 

Aber gleiche Logik duplizieren sieht nicht sehr gut und es ist schwer, ihn zu ändern.

Auch habe ich versucht, für String wie diese spezielle Karte zu erstellen:

CreateMap<string, string>().ConvertUsing(src => string.IsNullOrEmpty(src) ? 
null : src) 

Aber solche String Karte Auswirkungen auf alle meine Karten hat, aber ich solche Logik müssen nur für mehrere Karten, nicht für alle.

Ich habe auch versucht ForAllMembers Methode zu verwenden:

... .ForAllMembers(opt => opt.Condition(); 

Aber es gibt keinen Weg definieren Art von Quellenelement, um cpecify eine Bedingung für Streicher.

Was ist der beste Weg, um einige gemeinsame Mapping-Logik für mehrere Mitglieder des gleichen Typs für eine Karte zu definieren?

Antwort

0

Duplizieren Sie einfach die Logik, die meisten würde ich den Zustand Teil in eine Erweiterung Methode extrahieren, die Sie aufrufen können.

Verwandte Themen