static void CreateMap(List <MapperDescritor> mapperDescritors) { Mapper.Initialize(cfg => { foreach (MapperDescritor mapperDescritor in mapperDescritors) { IMappingExpression exp = cfg.CreateMap(mapperDescritor.SourceType, mapperDescritor.TargetType); IMappingExpression reversedMapExp = null; if (mapperDescritor.ReverseMap) { reversedMapExp = exp.ReverseMap(); } foreach (MapperMemberRelationship memberRelationship in mapperDescritor.MemberRelationships) { exp.ForMember(memberRelationship.TargetMember.Name, mce => mce.MapFrom(memberRelationship.SourceMember.Name)); if (reversedMapExp != null) { reversedMapExp.ForMember(memberRelationship.SourceMember.Name, mce => mce.MapFrom(memberRelationship.TargetMember.Name)); } } } }); }
} //=> mapped from Post.Category public override void CustomMappings(IMappingExpression <ComplexPostDto, Post> mapping) { mapping .ReverseMap() .ForMember( dest => dest.FullTitle, config => config.MapFrom(src => $"{src.Title} ({src.Category.Name})")); }
/// <summary> /// 反转 映射 /// </summary> /// <param name="mapping"></param> /// <param name="reverseMap">true 代表反转 false 代表不反转</param> /// <returns></returns> internal static IMappingExpression ReverseMap(this IMappingExpression mapping, bool reverseMap) { if (reverseMap == false) { return(mapping); } return(mapping.ReverseMap()); }
public static IMappingExpression <TDestination, TSource> ReserseMapWithIgnoreEntitiesEmpty <TSource, TDestination>(this IMappingExpression <TSource, TDestination> map) { return(map.ReverseMap().SetNullInEntitiesEmpty(TypeHelper.GetPropertiesOf <IEntity>(typeof(TSource)) .Select(c => ExpressionHelper.CreateExpressionFromPropertyInfo <TSource>(c)) .ToArray())); }