• [非专业翻译] Mapster 映射配置验证和编译


    [非专业翻译] Mapster - 映射配置验证和编译

    系列介绍

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

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

    正文

    本文将说明 Mapster 中的 映射配置验证和编译

    为了在单元测试中验证映射,并帮助处理 "Fail Fast" 情况,添加了以下严格映射模式。

    显式映射

    通过修改 配置实例 RequireExplicitMapping 值决定是否开启强制显示映射。

    RequireExplicitMapping 值为 true 时,所有类型映射必须显式配置,即使非常简单:

    // 默认值为: "false"
    TypeAdapterConfig.GlobalSettings.RequireExplicitMapping = true;
    // 当你必须为每个类有一个显式的配置,即使它只是:
    TypeAdapterConfig<Source, Destination>.NewConfig();
    

    检查目标类型程序

    通过修改 配置实例 RequireDestinationMemberSource 值决定是否开启强制目标类型成员检查。

    RequireDestinationMemberSource 值为 true 时,所有 目标类型的字段 必须与 源类型字段 保持一致或显示的指定映射或忽略成员:

    // 默认值为: "false"
    TypeAdapterConfig.GlobalSettings.RequireDestinationMemberSource = true;
    

    验证映射配置

    调用 TypeAdapterConfig<Source, Destination>.NewConfg()Compile 方法将验证 特定类型的映射配置是否存在错误;

    调用 配置实例 的 Compile 方法以验证 配置实例中的映射配置 是否存在错误;

    另外,如果启用了 显式映射 , 它还将包含没有在映射器中注册的类的错误。

    // 验证特定配置
    var config = TypeAdapterConfig<Source, Destination>.NewConfig();
    config.Compile();
    
    // 验证整个配置实例的配置
    TypeAdapterConfig<Source, Destination>.NewConfig();
    TypeAdapterConfig<Source2, Destination2>.NewConfig();
    TypeAdapterConfig.GlobalSettings.Compile();
    

    配置编译

    Mapster 将在第一次调用映射时自动编译:

    var result = poco.Adapt<Dto>();
    

    你也可以通过调用 配置实例 或 特定映射配置的Compile 方法编译映射:

    // 全局配置实例
    TypeAdapterConfig.GlobalSettings.Compile();
    
    // 配置实例
    var config = new TypeAdapterConfig();
    config.Compile();
    
    // 特定配置
    var config = TypeAdapterConfig<Source, Destination>.NewConfig();
    config.Compile();
    

    推荐在程序添加映射配置完成后调用一次 Compile 方法,可以快速验证 映射配置中是否存在错误,而不是在运行到某一行业务代码时触发错误降低效率。

    注意!调用 Compile 方法前应该完成所有的映射配置,调用 Compile 方法之后 配置实例 就不允许添加修改其它映射配置!

    目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程
    如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】支持,或请我喝杯咖啡【赞赏】,这将是我继续写作,分享的最大动力!
    声明:原创博客!请在转载时在文章开头注明本人博客地址。如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
  • 相关阅读:
    【bzoj 2159】Crash 的文明世界
    【bzoj 4833】[Lydsy1704月赛]最小公倍佩尔数
    【解题报告】网络流24题
    【bzoj 4449】[Neerc2015]Distance on Triangulation
    【ARC 063F】Snuke's Coloring 2
    【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
    【AGC 005F】Many Easy Problems
    【AGC 002F】Leftmost Ball
    替罪羊树
    状压dp
  • 原文地址:https://www.cnblogs.com/staneee/p/14913636.html
Copyright © 2020-2023  润新知