我想在映射深層(即層次> 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