#region 用来验证反向映射publicclassMemberSource{publicstring Name {get;set;}publicMemberInnerSource MemberInnerSource {get;set;}publicMemberOtherInnerSource MemberOtherInnerSource {get;set;}}publicclassMemberInnerSource{publicstring Name {get;set;}publicstring Description {get;set;}}publicclassMemberOtherInnerSource{publicstring Name {get;set;}publicstring Description {get;set;}publicstring Title {get;set;}}publicclassMemberDestination{publicstring Name {get;set;}publicstring Description {get;set;}publicstring Title {get;set;}}#endregion
#region 反向映射 正常展平配置//var config3 = new MapperConfiguration(cfg =>//{// // IncludeMembers 里面参数是有顺序的,映射规则按照先后顺序。先匹配到的优先// cfg.CreateMap<MemberSource, MemberDestination>()// .IncludeMembers(s => s.MemberInnerSource, s => s.MemberOtherInnerSource);// cfg.CreateMap<MemberInnerSource, MemberDestination>(MemberList.None);// cfg.CreateMap<MemberOtherInnerSource, MemberDestination>();//});/*二选一*/// 反向映射var config3 =newMapperConfiguration(cfg =>{// IncludeMembers 里面参数是有顺序的,映射规则按照先后顺序。先匹配到的优先
cfg.CreateMap<MemberSource, MemberDestination>().IncludeMembers(s => s.MemberInnerSource, s => s.MemberOtherInnerSource).ReverseMap();
cfg.CreateMap<MemberInnerSource, MemberDestination>(MemberList.None).ReverseMap();
cfg.CreateMap<MemberOtherInnerSource, MemberDestination>().ReverseMap();});// 使用var source3 =newMemberSource{
Name ="name",
MemberInnerSource =newMemberInnerSource{ Name ="inner name", Description ="description"},
MemberOtherInnerSource =newMemberOtherInnerSource{ Title ="title", Name ="other inner name", Description ="other inner desc"}};var mapper3 = config3.CreateMapper();var dest3 = mapper3.Map<MemberDestination>(source3);//当使用反向映射时可以使用
dest3.Name ="z";
mapper3.Map(dest3, source3);
Console.WriteLine($"{source3.Name}");// z
Console.WriteLine($"{dest3.Title}, {dest3.Name}, {dest3.Description}");// title, name, description or title, z, description#endregion