zoukankan      html  css  js  c++  java
  • [非专业翻译] Mapster 映射配置继承

    [非专业翻译] Mapster - 映射配置继承

    系列介绍

    [非专业翻译] 是对没有中文文档进行翻译的系列博客,文章由机翻和译者自己理解构成,和原文相比有所有不同,但意思基本一致。

    因个人能力有限,如有谬误之处还请指正,多多包涵。

    正文

    本文将说明 Mapster 中的映射配置继承

    隐式继承映射配置

    源类型

    Mapster 默认会把 源类型的 映射配置 应用到 源类型的子类。

    如创建了一个 SimplePoco -> SimpleDto 的映射配置:

    TypeAdapterConfig<SimplePoco, SimpleDto>.NewConfig()
        .Map(dest => dest.Name, src => src.Name + "_Suffix");
    

    那么继承了 SimplePocoDerivedPoco 也将应用同样的映射配置:

    var dest = TypeAdapter.Adapt<DerivedPoco, SimpleDto>(src); 
    //dest.Name = src.Name + "_Suffix"
    

    如果不希望子类使用父类映射配置,可以设置 AllowImplicitSourceInheritancefalse 关闭继承:

    TypeAdapterConfig.GlobalSettings.AllowImplicitSourceInheritance = false;
    

    目标类型

    Mapster 默认不会把 目标类型的 映射配置 应用到 目标类型的子类。

    可以设置 AllowImplicitDestinationInheritance 开启:

    TypeAdapterConfig.GlobalSettings.AllowImplicitDestinationInheritance = true;
    

    显示继承映射配置

    可以通过 Inherits 方法显示的继承类型映射配置:

    TypeAdapterConfig<DerivedPoco, DerivedDto>.NewConfig()
            .Inherits<SimplePoco, SimpleDto>();
    

    子类继承父类映射配置

    可以通过 Include 方法显示的让子类继承父类的映射配置:

    TypeAdapterConfig<Vehicle, VehicleDto>.NewConfig()
        .Include<Car, CarDto>();
    
    Vehicle vehicle = new Car { Id = 1, Name = "Car", Make = "Toyota" };
    var dto = vehicle.Adapt<Vehicle, VehicleDto>();
    
    dto.ShouldBeOfType<CarDto>();
    ((CarDto)dto).Make.ShouldBe("Toyota"); // "Make" 属性在 Vehicle 中不存在
    
  • 相关阅读:
    Find the Smallest K Elements in an Array
    Count of Smaller Number
    Number of Inversion Couple
    Delete False Elements
    Sort Array
    Tree Diameter
    Segment Tree Implementation
    Java Programming Mock Tests
    zz Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    Algorithm about SubArrays & SubStrings
  • 原文地址:https://www.cnblogs.com/staneee/p/14913614.html
Copyright © 2011-2022 走看看