Ответ 1
Да, потому что, если вы измените тип некоторого свойства (например, DateTime → string), оно не является двунаправленным (вам нужно будет указать Automapper, как преобразовать строку → DateTime).
Если я хочу сделать двунаправленное отображение, мне нужно создать два отображения?
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
Да, потому что, если вы измените тип некоторого свойства (например, DateTime → string), оно не является двунаправленным (вам нужно будет указать Automapper, как преобразовать строку → DateTime).
Да, но если вы часто это делаете:
public static class AutoMapperExtensions
{
public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
Mapper.CreateMap<TDestination, TSource>();
}
}
то
Mapper.CreateMap<A, B>().Bidirectional();
Теперь это запечено в AutoMapper
Mapper.CreateMap<SourceType, DestType>().ReverseMap();
Отличная идея Эрик! Я добавил возвращаемое значение, поэтому обратное сопоставление также настраивается.
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}