Jó cucc ez az AutoMapper, de jó ha az ember miután megismerte, jól elteszi a trükkös megoldások linkjeit.
Ebből most egy szemelvény, egy olyan probléma amire sokáig kerestem a választ. Adott egy régi és egy új objektum hierarchia, ide-oda mappelünk.A "régi" objektumhierarchiában van egy ilyen:
És az új modellben pedig egy ilyen:
A feladat a következő Állítsuk be a mappelést oda-vissza. Az egyik irány tök jó, amikor a régiből hozunk létre újat, ott egy trükk van amikor beállítjuk a map struktúrát.
A másik irány egy kicsit bonyolultabb, főleg mert a child osztálynak nincs paraméter nélküli konstruktora, ráadásul a paraméteres konstruktor a szülő osztály referenciáját várja. Nekem több órába telt a próbálkozás, kezdtem extension method-okkal, 20-30 soros lambda kifejezésekkel, de vagy a mapping konfig volt hibás, vagy folyton dobta a hibaüzenetet, hogy "OldChildType has no parameterless constructor". Vagyis nem tudja megkreálni, akárhogy próbálkoztam a lambda hegyekkel.
Aztán egyszer csak egy stackoverflow bejegyzés volt ami megmutatta a helyes utat, és kb 2 sor az egésznek a kulcsa.
Szóval ajánlom mindenkinek a figyelmébe a UseDestinationValue -t mint kulcsszót, érdemes ráguglizni hogy mit csinál.
Nincsenek megjegyzések:
Megjegyzés küldése