[非專業翻譯] Mapster - 對映器

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

[非專業翻譯] Mapster - 對映器

系列介紹

[非專業翻譯] 是對沒有中文文件進行翻譯的系列部落格,文章由機翻和譯者自己理解構成,和原文相比有所有不同,但意思基本一致。

因個人能力有限,如有謬誤之處還請指正,多多包涵。

正文

本文將說明 Mapster 中的 對映器

擴充套件方法

可以從任何地方呼叫 Adapt 方法。

var dest = src.Adapt<TSource, TDestination>();

或者直接

var dest = src.Adapt<TDestination>();

這兩個擴充套件方法做的都是同樣的事情。src.Adapt<TDestination> 將把 src 轉換為 object 型別。因此,如果要轉換的是值型別,那麼請使用 src.Adapt<TSource, TDestination> 以避免不必要的裝箱/拆箱。

對映器例項 ( Mapper )

在一些情況下,需要將 對映器 或 工廠函式 傳遞到依賴注入容器中。Mapster 提供了 IMapperMapper 來滿足這個需求:

IMapper mapper = new Mapper();

並且使用 Map 函式來執行對映:

var result = mapper.Map<TDestination>(source);

構建器 ( Builder )

在大多數情況下,Adapt方法就足夠了,但有時需要使用構建器來支援一些特殊的場景。

一個基本的例子 —— 傳遞執行時的值:

var dto = poco.BuildAdapter()
              .AddParameters("user", this.User.Identity.Name)
              .AdaptToType<SimpleDto>();

如果使用 IMapper 例項,你可以通過 From 建立構建器。

var dto = mapper.From(poco)
              .AddParameters("user", this.User.Identity.Name)
              .AdaptToType<SimpleDto>();

程式碼生成

請參閱 Mapster.Tool 來生成特定型別的對映配置,而不是使用預設的對映器。

相關文章