public class Foo
{
public string Baz { get; set; }
public List<Bar> Bars { get; set; }
}
当我映射上面的类时,有没有什么办法来定义我想让automapper映射对象的深度?一些伪代码我之后:AutoMapper定义映射级别
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 0 });
// result = { Baz: "" }
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 1 });
// result = { Baz: "", Bars: [{ Blah: "" }] }
var mapped = Mapper.Map<FooDTO>(foo, opt => { levels: 2 });
// result = { Baz: "", Bars: [{ Blah: "", Buzz: [{ Baz: "" }] }] }
// etc...
我目前使用automapper 3.3由于nuget依赖。
即使在最新版本中,也无法在automapper中设置关卡。因为您一次只处理1级层次结构。在你的情况下,你需要2个映射器配置。一个用于'Foo',另一个用于'Bar'。你可以在你的映射器配置中使用'opt.Ignore()'作为你不想映射的属性。如果对象的名称相同或匹配,Automapper会自动映射。我认为在你的情况下,对象名称是不同的,你需要为每个对象进行配置。 – Venky