AutoMapper – przydatna biblioteka

AutoMapperW celu łatwiejszego zrozumienia co to jest AutoMapper jak on działa posłużę się przykładem. Ale najpierw trzy zdania wstępu: AutoMapper jest jedną z najczęściej używanych bibliotek. AutoMapper jest prostą biblioteką zbudowaną do rozwiązywania złożonych problemów polegających na mapowaniu jednego obiektu na drugi. Pisanie maperów jest raczej nużącą i nudną czynnością, więc dlaczego nie użyć narzędzia, które zrobi to za nas?

AutoMapper – przykład użycia

Wyobraźmy sobie, że Zbigniew chce sprzedać samochód. Stwórzmy w tym celu dwie klasy: Samochod i Osoba.

W programie mamy również klasę Ogloszenie. Na podstawie klasy Ogloszenie będą wyświetlane informacje dla potencjalnego kupującego: kto sprzedaje i jaki samochód chce sprzedać.

No to teraz zobaczmy jak nasz program działa:

Zbigniew Kowalski sprzedaje Fiat 126p

Bardzo ładnie, ale jak osoba, która chce kupić samochód ma się skontaktować ze Zbigniewem? Trzeba dodać nową właściwość.

Sprawdźmy jak działa program:

Zbigniew Kowalski sprzedaje Fiat 126p. Kontakt: 550444333

W sumie przydałoby się jeszcze dodać informacje do ogłoszenia w jakiej miejscowości te auto będzie sprzedawane. Znowu trzeba byłoby dopisać nową linijkę w konstruktorze ogłoszenia. A co jakby trzeba było przekopiować z jednej klasy do drugiej 30 różnych właściwości? Ręcznie pisać 30 linijek kodu? W tym przypadku przychodzi nam z pomocą biblioteka AutoMapper! Sprawdźmy w naszym przykładzie jak łatwo można przy pomocy AutoMappera przekopiować wartości z jednego obiektu do drugiego.

Co otrzymujemy w rezultacie?

An unhandled exception of type ‚AutoMapper.AutoMapperMappingException’ occurred in AutoMapper.dll

Dlaczego? AutoMapper tworzy obiekt Ogloszenie przy użyciu pustego (domyślnego) konstruktora. Więc albo dodajmy do kodu pusty konstruktor Ogloszenia albo wyrzucamy konstruktor public Ogloszenie(Osoba osobaSprzedajaca). Ja wyrzucam. Skompilujmy jeszcze raz.

Zbigniew Kowalski sprzedaje . Kontakt: 550444333

AutoMapper kopiuje wartości z jednego obiektu do drugiego jeżeli nazwy właściwości są takie same. MarkaSamochoduNaSprzedasz nie została skopiowana, ponieważ klasa Osoba nie ma pola która ma taką samą nazwę. Spokojnie. AutoMapper przekopiuje odpowiednie wartości jak mu powiem jak to ma zrobić.

Zbigniew Kowalski sprzedaje Fiat 126p. Kontakt: 550444333

AutoMapper ma na prawdę szeroki wachlarz możliwości. Polecam się z nim zapoznać.

AutoMapper – linki

Strona projektu
Wiki projektu (ang)
Cpratt (ang) – przykład
AltcontrolDelete (pl) – przykład
DariuszTarczynski (pl) – przykład
DevTrends (ang) – kiedy nie używać AutoMappera

Powered by: Wordpress