[非專業翻譯] 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 提供了 IMapper 和 Mapper 來滿足這個需求:
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 來生成特定類型的映射配置,而不是使用默認的映射器。
