AutoMapper反向映射

在这里插入图片描述

 #region 用来验证反向映射
        public class MemberSource
        {
            public string Name { get; set; }
            public MemberInnerSource MemberInnerSource { get; set; }
            public MemberOtherInnerSource MemberOtherInnerSource { get; set; }
        }

        public class MemberInnerSource
        {
            public string Name { get; set; }
            public string Description { get; set; }
        }

        public class MemberOtherInnerSource
        {
            public string Name { get; set; }
            public string Description { get; set; }
            public string Title { get; set; }
        }

        public class MemberDestination
        {
            public string Name { get; set; }
            public string Description { get; set; }
            public string 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 = new MapperConfiguration(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 = new MemberSource
            {
                Name = "name",
                MemberInnerSource = new MemberInnerSource { Name = "inner name", Description = "description" },
                MemberOtherInnerSource = new MemberOtherInnerSource { 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Izrj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值