我想在映射深层(即层次> 1)对象模型时忽略某些属性。Automapper忽略属性忽略
下面的测试工作正常:
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和酒吧的性质上的父类中的下列测试失败:
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”)automapper将该值设置为null。我的映射配置有什么问题?
谢谢帕特里克。完善!我只是在目标集合的上下文中考虑了UseDestinationValue,但现在这一切都合情合理。 – Brownie 2011-03-23 22:21:20