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