2010-03-13 11 views

Odpowiedz

18

Tak, ponieważ jeśli zmienisz typ jakiejś właściwości (na przykład DateTime -> string), nie jest ona dwukierunkowa (musisz poinstruować program Automapper, jak konwertować ciąg -> DateTime).

+0

ma sens, ale byłoby miło, że biblioteka próbował zrobić mapowanie jako konwencja, i można wyraźnie go wyłączyć, jeśli nie było pracujący. Na przykład, mapuję obiekty domeny, aby wyświetlać modele, a mapowanie dwukierunkowe będzie działało idealnie dla mnie. –

52

Tak, ale jeśli znajdziesz się w ten sposób często:

public static class AutoMapperExtensions 
{ 
    public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression) 
    { 
     Mapper.CreateMap<TDestination, TSource>(); 
    } 
} 

następnie:

Mapper.CreateMap<A, B>().Bidirectional(); 
+0

dzięki. to jest fajne – Benny

+0

fajnie, dziękuję :) – Marko

+0

podczas gdy to może nie odpowiedzieć na pytanie, to na pewno rozwiązuje podstawowy problem postawiony – hanzolo

7

świetny pomysł Erica! Dodałem wartość zwracaną, więc odwrotne mapowanie jest również konfigurowalne.

public static class AutoMapperExtensions 
{ 
    public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression) 
    { 
     return Mapper.CreateMap<TDestination, TSource>(); 
    } 
} 
15

To jest teraz upieczony w AutoMapper

Mapper.CreateMap<SourceType, DestType>().ReverseMap(); 
+0

Nie działa z niestandardowymi mapowaniami, tylko wtedy, gdy nazwy właściwości są takie same w obu klasach. –

Powiązane problemy