Problema de fusión automática de objetos
Después de hacer que automapper funcione (Pregunta anterior), Estoy luchando con otro problema (lo llevé a otra pregunta, por lo que el primero no sería demasiado complicado) ...
Tengo las siguientes clases:
public class Model1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDay { get; set; }
public int Gender { get; set; }
public string NickName { get; set; }
}
public class Model2
{
public bool Married { get; set; }
public int Children { get; set; }
public bool HasPet { get; set; }
}
public class Entity1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDay { get; set; }
public int Gender { get; set; }
}
public class Entity2
{
public bool Married { get; set; }
public int Children { get; set; }
public bool HasPet { get; set; }
public string NickName { get; set; }
}
Estos objetos son esquemáticamente similares a mis objetos originales, excepto por el nombre y la complejidad.
Y la clase de configuración AutoMapper (llamada desde Global.asax):
public class AutoMapperConfig
{
public static MapperConfiguration MapperConfiguration { get; set; }
public static void Configure()
{
MapperConfiguration = new MapperConfiguration(cfg => {
cfg.AddProfile<Out>();
cfg.CreateMap<SuperModel, SuperEntity>();
});
MapperConfiguration.AssertConfigurationIsValid();
}
}
public class Out: Profile
{
protected override void Configure()
{
CreateMap<Model1, Entity1>();
CreateMap<Model2, Entity2>()
.ForMember(dest => dest.NickName, opt => opt.Ignore());
CreateMap<Model1, Entity2>()
.ForMember(dest => dest.Married, opt => opt.Ignore())
.ForMember(dest => dest.Children, opt => opt.Ignore())
.ForMember(dest => dest.HasPet, opt => opt.Ignore());
CreateMap<SuperModel, SuperEntity>()
.ForMember(dest => dest.Entity1, opt => opt.MapFrom(src => src.Model1))
.ForMember(dest => dest.Entity2, opt => opt.MapFrom(src => src.Model2));
}
}
Cuando necesito convertir el objeto, hago lo siguiente (en este punto tengo_superModel
inicializado y lleno de datos):
SuperEntity _superEntity = new SuperEntity();
AutoMapperConfig.MapperConfiguration.CreateMapper().Map<SuperModel, SuperEntity>(_superModel, _superEntity);
Entonces, mapeoModel1
aEntity1
(bruja está bien), y tambiénModel2
aEntity2
(bruja también está bien, excepto la propiedad Id, que se ignora).
Objetos principalesSuperModel
ySuperEntity
también están mapeados y parece funcionar bien.
El problema ocurre cuando mapeoModel1
aEntity2
, para obtener elNickName
(pensó que el resto de las propiedades se ignoran). De alguna manera es siemprenull
!
¿Algunas ideas?