27

如果我想做双向映射,我需要创建两个映射吗?

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

4

4 回答 4

56

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

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

然后:

Mapper.CreateMap<A, B>().Bidirectional();
于 2010-10-24T18:44:28.253 回答
27

这现在被烘焙到 AutoMapper 中

Mapper.CreateMap<SourceType, DestType>().ReverseMap();
于 2015-01-30T14:31:22.570 回答
21

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

于 2010-03-13T16:21:30.557 回答
7

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

public static class AutoMapperExtensions
{
    public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
    {
        return Mapper.CreateMap<TDestination, TSource>();
    }
}
于 2013-01-04T08:40:58.667 回答