[非專業翻譯] Mapster - 對映配置驗證和編譯

玩雙截棍的熊貓發表於2021-06-26

[非專業翻譯] 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 方法之後 配置例項 就不允許新增修改其它對映配置!

相關文章