2016-09-20 6 views
1

Ich habe versucht, etwas Ähnliches zu AutoMapper Custom MappingsAutoMapper Mapping oder ignorieren

aber was ich wirklich will, ist nicht auf eine andere Eigenschaft abzubilden, aber es ignorieren.

Ich habe versucht:

.ForMember(m=>m.BillingAddress,m=>m.ResolveUsing((result, card) => { 
     if (!string.IsNullOrEmpty(card.BillingDetails?.Address1)) { 
      return card.BillingDetails.Address1; 
     } 
     else { 
      return result.Ignore(); 
     } 
})) 

aber dies stellt nur eine Art von Auflösung Ergebnis auf die Eigenschaft i abzubilden bin versucht.

Was ich wirklich tun möchte, ist, was ich in dieser Frage zu stellen versucht:

https://github.com/AutoMapper/AutoMapper/issues/1690

dh

.ForMember(m=>m.BillingAddress, m=>{ 
    m.Condition(s=>!String.IsNullOrEmpty(s.BillingDetails?.Address1), m.MapFrom(...), m.Ignore()) 
} 

jetzt alles es nulling heraus, dass ich in diesen Bereichen haben wenn ich die .condition und eine .MapFrom danach verwende.

+0

Ich denke, das ist ein Anti-Muster, weil Mapper stumm sein sollen, und somit möglicherweise die Versuchung des Setzens zu viel Logik in ihnen zu widerstehen wollen. –

+0

würden Sie einfach verschiedene Konfigurationen für mögliche Änderungen der Logik erstellen? – brentlyjdavid

Antwort

0

Das ist nicht wirklich, wie ich das gerne arbeiten würde, aber es hat für diese spezielle Situation funktioniert. Es wäre immer noch schön, das zu haben, was ich vorher wollte, aber es sieht so aus, als wenn du überhaupt kein mapFrom machst, es ignoriert es einfach.

    .ForMember(m => m.BillingAddress, m => { 
         m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Address1)); 
         m.MapFrom(i => i.BillingDetails.Address1); 
        }) 
        .ForMember(m => m.BillingAddress2, m => { 
         m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Address2)); 
         m.MapFrom(i => i.BillingDetails.Address2); 
        }) 
        .ForMember(m => m.City, m => { 
         m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.City)); 
         m.MapFrom(i => i.BillingDetails.City); 
        }) 
        .ForMember(m => m.State, m => { 
         m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.State)); 
         m.MapFrom(i => i.BillingDetails.State); 
        }) 
        .ForMember(m => m.Zip, m => { 
         m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Zip)); 
         m.MapFrom(i => i.BillingDetails.Zip); 
        })