Я хотел бы игнорировать некоторые свойства при отображении глубинных (то есть уровней> 1) объектных моделей.
Следующий тест работает нормально:
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);
Однако, когда я пытаюсь сделатьто же самое отображение, но с Foo и Bar в качестве свойств родительского класса, следующий тест не пройден:
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);
Вместо того, чтобы игнорировать текст класса Child (т.е. оставить его как "bar"), автоматическое преобразование устанавливает значение вноль.Что я делаю не так с моей конфигурацией отображения?