public class Foo
{
public string Baz { get; set; }
public List<Bar> Bars { get; set; }
}
Kiedy odwzorowuję powyższą klasę, czy istnieje sposób na określenie, jak głęboko chcę, aby automapper mapował obiekty? Jakiś pseudo kod tego, czego szukam:AutoMapper definiuje poziom mapowania
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...
Używam obecnie automapper 3.3 z powodu zależności od nugetu.
Nie ma sposobu na ustawienie poziomów w automaperze nawet w najnowszej wersji. Ponieważ zajmujesz się tylko 1 poziomem hierarchii naraz. W twoim przypadku potrzebujesz 2 konfiguracje mapperów. Jeden dla 'Foo' i drugi dla' Bar'. Możesz użyć 'opt.Ignore()' w swojej konfiguracji programu odwzorowującego dla dowolnej właściwości, której nie chcesz mapować. Automapper automatycznie mapuje, czy nazwy obiektów są takie same czy pasujące. Myślę, że w twoim przypadku nazwy obiektów są różne i potrzebujesz konfiguracji dla każdego obiektu. – Venky