为了账号安全,请及时绑定邮箱和手机立即绑定

08.AutoMapper 之嵌套映射(Nested Mappings)

标签:
C++

嵌套映射(Nested Mappings)

当映射引擎执行映射时,它可以使用各种方法之一来解析目标成员值。其中一种方法是使用另一种类型映射,其中源成员类型和目标成员类型也在映射配置中配置。这使我们不仅可以扁平化我们的源类型,还可以创建复杂的目标类型。例如,我们的源类型可能包含另一种复合类型:

public class OuterSource{
    public int Value { get; set; }    public InnerSource Inner { get; set; }
}public class InnerSource{
    public int OtherValue { get; set; }
}

我们可以简单地将OuterSource.Inner.OtherValue扁平化为一个InnerOtherValue属性,但我们可能还想为Inner属性创建相应的复合类型:

public class OuterDest{
    public int Value { get; set; }    public InnerDest Inner { get; set; }
}public class InnerDest{
    public int OtherValue { get; set; }
}

在这种情况下,我们需要配置其他源/目标类型映射:

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<OuterSource, OuterDest>();
    cfg.CreateMap<InnerSource, InnerDest>();
});
config.AssertConfigurationIsValid();var source = new OuterSource
    {
        Value = 5,
        Inner = new InnerSource {OtherValue = 15}
    };var mapper = config.CreateMapper();var dest = mapper.Map<OuterSource, OuterDest>(source);

dest.Value.ShouldEqual(5);
dest.Inner.ShouldNotBeNull();
dest.Inner.OtherValue.ShouldEqual(15);

这里有几点需要注意:

  • 配置类型的顺序无关紧要

  • 调用Map不需要指定任何内部类型映射,只需要指定用于传入源值的类型映射

通过扁平化和嵌套映射,我们可以创建各种类型的目标对象,以满足我们的需求。



作者:这个用户有点逗
链接:https://www.jianshu.com/p/013715d2352d


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消