2010-09-13 12 views
20

Sto utilizzando Mapper.DynamicMap() all'interno di un metodo generico e desidero, senza utilizzare .CreateMap(), ignorare alcuni valori di origine null. È possibile?Utilizzo di DynamicMap() e ignora il valore di origine null

+0

Vuoi dire se si ha un elenco di oggetti "sorgente" e alcuni sono stati nulli, non si vuole una lista di oggetti "destinazione" mappati con alcuni valori null: vuoi solo mappare gli oggetti di origine non null? – PatrickSteele

+0

Esattamente. Ad esempio: se ho un oggetto Source con Name e SSN e un oggetto Destination con la stessa proprietà, se alcune di queste proprietà sono null nell'oggetto Source non voglio che siano mappate nell'oggetto Destination. Perché potresti chiedere? Non ho nessuna proprietà già impostata nell'oggetto Destination da sovrascrivere con valori nulli. – JoseMarmolejos

+1

usa questo http://valueinjecter.codeplex.com/ se ti piace il mapping basato su dinamiche/convenzioni – Omu

risposta

32

Se si desidera che tutte le proprietà di origine con valori nulli per essere ignorato è possibile utilizzare:

Mapper.CreateMap<SourceType, DestinationType>() 
        .ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull)); 

In caso contrario, si può fare qualcosa di simile per ogni membro. Questo diventerà noioso se ci sono un gran numero di proprietà.

+3

Un modo per farlo con DynamicMap piuttosto che CreateMap? – JustMaier

0

ho risolto con DataMember proprietà nel tipo di destinazione [DataMember(EmitDefaultValue = false)] aggiungere questo nella destinazione DTO

Problemi correlati