Двунаправленное отображение AutoMapper - PullRequest
24 голосов
/ 13 марта 2010

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

Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>() * * 1004

Ответы [ 4 ]

54 голосов
/ 24 октября 2010

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

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

тогда:

Mapper.CreateMap<A, B>().Bidirectional();
20 голосов
/ 30 января 2015

Теперь запекается в AutoMapper

Mapper.CreateMap<SourceType, DestType>().ReverseMap();
20 голосов
/ 13 марта 2010

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

7 голосов
/ 04 января 2013

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

public static class AutoMapperExtensions
{
    public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
    {
        return Mapper.CreateMap<TDestination, TSource>();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...