Подтвердить что ты не робот

Двунаправленное сопоставление AutoMapper

Если я хочу сделать двунаправленное отображение, мне нужно создать два отображения?

Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()?

4b9b3361

Ответ 1

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

Ответ 2

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

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

то

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

Ответ 3

Теперь это запечено в AutoMapper

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

Ответ 4

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

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