如果我想做双向映射,我需要创建两个映射吗?
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
如果我想做双向映射,我需要创建两个映射吗?
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
是的,但是如果您发现自己经常这样做:
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();
是的,因为如果您更改某些属性的类型(例如 DateTime -> string),它不是双向的(您需要指示 Automapper 如何转换 string -> DateTime)。
好主意埃里克!我添加了一个返回值,所以反向映射也是可配置的。
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}