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

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

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

4 ответа

Решение

Да, потому что если вы измените тип какого-либо свойства (например, 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>();
    }
}
Другие вопросы по тегам