2010-09-13 5 views
20

Estoy usando Mapper.DynamicMap() dentro de un método genérico y me gustaría, sin usar .CreateMap(), ignorar algunos valores de fuente que son nulos. ¿Esto es posible?Usando DynamicMap() e ignorar el valor de fuente nulo

+0

¿Quieres decir si tenía una lista de objetos "fuente" y algunos eran nulas, no desea una lista de objetos mapeados de "destino" con algunos valores nulos: ¿solo desea que se mapeen los objetos fuente no nulos? – PatrickSteele

+0

Exactamente. Por ejemplo: si tengo un objeto Fuente con Nombre y SSN, y un objeto Destino con la misma propiedad, si alguna de esas propiedades es nula en el objeto Fuente, no quiero que se mapeen en el objeto Destino. ¿Por qué puedes preguntar? No tengo propiedades que ya estén configuradas en el objeto Destino para sobrescribirlas con valores nulos. – JoseMarmolejos

+1

utilice este http://valueinjecter.codeplex.com/ si le gusta el mapeo dinámico/basado en convenciones – Omu

Respuesta

32

Si desea que todas las propiedades de origen con valores nulos a ser ignorados puede usar:

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

De lo contrario, se puede hacer algo similar para cada miembro. Esto se volverá tedioso si hay una gran cantidad de propiedades.

+3

¿Alguna forma de hacer esto con DynamicMap en lugar de CreateMap? – JustMaier

0

Lo resuelto con DataMember propiedad en el tipo de destino [DataMember(EmitDefaultValue = false)] agregar esto en el destino DTO

Cuestiones relacionadas