AutoMapper
Jednym z ćwiczeń praktycznych podczas “Zaawansowanego szkolenia z .NET 4.0” organizowanego przez Comarch (opis szkolenia tutaj), było napisanie własnego “AutoMappera” na kilka możliwych sposobów (refleksja, dynamic).
A czym właściwie jest “AutoMapper”? AutoMapper to biblioteka, która udostępnia funkcjonalność automatycznego przepisywania wartości pól jednej klasy do drugiej. Potrzeba posiadania takiej funkcjonalności często zachodzi w sytuacji wykorzystywania w projekcie ORM. Zamiast pisać kod, służący do mapowania pól/właściwości z jednej klasy do drugiej, lepiej jest wykorzystać gotowe, darmowe rozwiązanie jakim jest AutoMapper, szczególnie, że jego wykorzystanie jest banalnie proste:
Najpierw, przed pierwszym użyciem tworzymy konfigurację mapowania (w jednym miejscu dla całego AppDomain). Najczęściej będzie to ‘global.asax’ lub ‘bootstraper’, ale może być też bezpośrednio przed metodą:
public static IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>(); np.: Mapper.CreateMap<ClassA, ClassB>();
a nast. w kodzie produkcyjnym do mapowania wykorzystujemy metodę Map:
public static TDestination Map
(object source); np: ClassA classAB = Mapper.Map (classAA);
//classAA will be copied to classAB and both will have values of classAA
Testowanie:
Najpierw musimy zainicjować konfigurację mapowania (np. poprzez wywołanie Bootstrapera), a nast. wywołać metodę:
Mapper.AssertConfigurationIsValid();
Linki:
Kod źródłowy znajduje się na github, a udost. jest na licencji MIT.
AutoMapper Getting-started Artykuł na Visual Studio Magizne opisujący bardziej zaawansowane przypadki użycia: link