2010-03-13 3 views

ответ

18

Да, поскольку если вы измените тип какого-либо свойства (например, DateTime -> string), оно не является двунаправленным (вам нужно указать Automapper, как преобразовать строку -> DateTime).

+0

Имеет смысл, но было бы неплохо это библиотека Пыталась сделать отображение в качестве конвенции, и вы можете явно отключить его, если он не был за работой. Например, я сопоставляю объекты домена для просмотра моделей, и двунаправленное сопоставление будет отлично работать для меня. –

52

Да, но если вы оказываетесь это часто делают:

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

затем:

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

спасибо. это круто – Benny

+0

классно, спасибо :) – Marko

+0

, хотя это может не ответить на вопрос, он, безусловно, решает основную проблему, поставленную – hanzolo

7

Отличная идея Эрика! Я добавил возвращаемое значение, поэтому также можно настроить обратное сопоставление.

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

Это теперь запеченный в AutoMapper

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

Это не работает с пользовательскими сопоставлениями, только когда имена свойств одинаковы в обоих классах. –