zoukankan      html  css  js  c++  java
  • 06.AutoMapper 之内联映射(Inline Mapping)

    https://www.jianshu.com/p/623655d7cb34

    内联映射(Inline Mapping)

    AutoMapper在 6.2 以上版本将动态创建类型映射。 当第一次调用Mapper.Map时,AutoMapper将创建类型映射配置并编译映射计划。 之后再调用将使用已编译的映射。

    内联配置

    要配置内联映射,请参考以下例子:

    var source = new Source();
    
    var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap().ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10)));
    

    您可以使用本地函数使配置更容易阅读:

    var source = new Source();
    
    void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
        opt.ConfigureMap()
           .ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10))
    };
    
    var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);
    

    您还可以在此内联映射中获取和使用运行时的值:

    int valueToAdd = 10;
    var source = new Source();
    
    void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
        opt.ConfigureMap()
           .ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + valueToAdd))
    };
    
    var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);
    

    内联验证

    第一次使用映射时,AutoMapper 将使用默认验证配置来验证映射(目标成员必须全部被映射)。之后调用映射将跳过验证。这可确保安全地映射对象。

    在执行每一个映射时根据配置的验证成员列表来决定验证源、目标还是不验证:

    var source = new Source();
    
    var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap(MemberList.None);
    

    也可以完全关闭内联映射验证(除非确保已经测试所有映射,否则不建议这样做):

    Mapper.Initialize(cfg => cfg.ValidateInlineMaps = false);
    

    禁用内联映射

    关闭内联映射:

    Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = false);
  • 相关阅读:
    Apache xmlrpc
    认识serialVersionUID
    解压gz文件
    List of HTTP header fields
    Hadoop的Python语言封装
    httpcore in httpcomponent
    python enumerate 用法
    Hadoop Streaming Made Simple using Joins and Keys with Python « All Things Hadoop
    移位操作
    Chunked transfer encoding
  • 原文地址:https://www.cnblogs.com/zengpeng/p/11059897.html
Copyright © 2011-2022 走看看