Me gustaría ignorar ciertas propiedades al mapear modelos de objetos profundos (es decir, niveles> 1).Automatizador ignorando ignorar propiedades
La siguiente prueba funciona bien:
class Foo
{
public string Text { get; set; }
}
class Bar
{
public string Text { get; set; }
}
Mapper.CreateMap<Foo, Bar>()
.ForMember(x => x.Text, opts => opts.Ignore());
var foo = new Foo { Text = "foo" };
var bar = new Bar { Text = "bar" };
Mapper.Map(foo, bar);
Assert.AreEqual("bar", bar.Text);
Sin embargo, cuando trato de hacer lo mismo mapeo pero tienen Foo y Bar como propiedades de una clase padre la siguiente prueba falla:
class ParentFoo
{
public Foo Child { get; set; }
}
class ParentBar
{
public Bar Child { get; set; }
}
Mapper.CreateMap<ParentFoo, ParentBar>();
Mapper.CreateMap<Foo, Bar>()
.ForMember(x => x.Text, opts => opts.Ignore());
var parentFoo = new ParentFoo
{
Child = new Foo { Text = "foo" }
};
var parentBar = new ParentBar
{
Child = new Bar { Text = "bar" }
};
Mapper.Map(parentFoo, parentBar);
Assert.AreEqual("bar", parentBar.Child.Text);
lugar de ignorar el texto de la clase Child (es decir, dejarlo como "barra"), Automapper establece el valor en nulo. ¿Qué estoy haciendo mal con mi configuración de mapeo?
Gracias Patrick. ¡Perfecto! Solo había pensado en UseDestinationValue en el contexto de las colecciones de objetivos, pero ahora todo tiene sentido. – Brownie