代码之家  ›  专栏  ›  技术社区  ›  Benny

自动映射双向映射

  •  21
  • Benny  · 技术社区  · 15 年前

    如果我想进行双向映射,是否需要创建两个映射?

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

    4 回复  |  直到 10 年前
        1
  •  19
  •   Darin Dimitrov    15 年前

    是的,因为如果更改某些属性的类型(例如datetime->string),则它不是双向的(您需要指示automapper如何转换string->datetime)。

        2
  •  54
  •   Eric Hauser    14 年前

    是的,但是如果你发现自己经常这样做:

    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
  •  17
  •   ASG    10 年前

    这个现在烤成了自动食品

    Mapper.CreateMap<SourceType, DestType>().ReverseMap();
    
        4
  •  7
  •   Paolo Sanchi    12 年前

    好主意,埃里克! 我添加了一个返回值,所以反向映射也是可配置的。

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