memberlist initialize formember custom c# lambda automapper automapper-2

c# - initialize - custom automapper



¿Cómo configurar el mapeo condicional en AutoMapper? (3)

AutoMapper le permite agregar condiciones a las propiedades que se deben cumplir antes de que esa propiedad se mapee.

Estaba haciendo el mapeo con algunas condiciones enum, tengo un aspecto que es poco esfuerzo para la comunidad de mi parte.

}

.ForMember(dest => dest.CurrentOrientationName, opts => opts.MapFrom(src => src.IsLandscape? PageSetupEditorOrientationViewModel.Orientation.Landscape : PageSetupEditorOrientationViewModel.Orientation.Portrait));

Supongamos que tengo las siguientes entidades (clases)

public class Target { public string Value; } public class Source { public string Value1; public string Value2; }

Ahora quiero configurar Auto Map, Map Value1 a Value si Value1 comienza con "A", pero de lo contrario quiero asignar Value2 a Value.

Esto es lo que tengo hasta ahora:

Mapper .CreateMap<Source,Target>() .ForMember(t => t.Value, o => { o.Condition(s => s.Value1.StartsWith("A")); o.MapFrom(s => s.Value1); <<***But then how do I supply the negative clause!?***>> })

Sin embargo, la parte que todavía me escapa es cómo decirle a AutoMapper que vaya a tomar el valor de s.Value2 si la condición anterior falla.

Simplemente me parece que la API no fue diseñada tan bien como podría ser ... pero puede ser que sea mi falta de conocimiento la que me estorbe.


Con la asignación condicional, solo puede configurar cuándo la asignación debe ejecutarse para la propiedad de destino especificada.

Por lo tanto, significa que no puede definir dos asignaciones con diferentes condiciones para la misma propiedad de destino.

Si tiene una condición como "si la condición es verdadera, entonces use PropertyA else use PropertyB", entonces debe hacerlo como "Tejal" escribió:

opt.MapFrom(src => src.Value1.StartsWith("A") ? src.Value1 : src.Value2)


Prueba esto

Mapper.CreateMap<Source, Target>() .ForMember(dest => dest.Value, opt => opt.MapFrom (src => src.Value1.StartsWith("A") ? src.Value1 : src.Value2));

La opción Condición se usa para agregar condiciones a las propiedades que se deben cumplir antes de que esa propiedad se correlacione y la opción MapFrom se usa para realizar asignaciones de miembros de origen / destino personalizadas.