ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-06-26 09:03:33  阅读:187  来源: 互联网

标签:非专业 映射 验证 配置 Compile 实例 Mapster TypeAdapterConfig


[非专业翻译] 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 方法之后 配置实例 就不允许添加修改其它映射配置!

标签:非专业,映射,验证,配置,Compile,实例,Mapster,TypeAdapterConfig
来源: https://www.cnblogs.com/staneee/p/14913636.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有