1. 程式人生 > 其它 >[非專業翻譯] Mapster - 值的對映

[非專業翻譯] Mapster - 值的對映

系列介紹

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

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

正文

本文將說明 Mapster 如何配置值的對映

計算值

可以使用 Map 方法指定計算值的邏輯。

例如,將 FirstNameLastName 拼接生成 FullName:

TypeAdapterConfig<Poco, Dto>.NewConfig()
                            .Map(dest => dest.FullName, src => src.FirstName + " " + src.LastName);

變換值

Map 方法只能對單個成員指定對映邏輯,使用 AddDestinationTransform 方法可以根據型別指定對映邏輯,例如替換字串等操作。

其實在 Mapster 中,只要在對映賦值操作執行之前,可以對對映的值執行任何操作。

字串 Trim

TypeAdapterConfig<TSource, TDestination>.NewConfig()
        .AddDestinationTransform((string x) => x.Trim());

null字串替換為空字串

TypeAdapterConfig<TSource, TDestination>.NewConfig()
        .AddDestinationTransform((string x) => x ?? "");

null集合返回空集合

config.Default.AddDestinationTransform(DestinationTransform.EmptyCollectionIfNull);

傳遞動態值

在一些情況下,可能需要傳遞動態傳遞值,可以通過呼叫 MapContext.Current.Parameters 來獲取動態傳遞的值。

例如設定 CreatedBy 欄位為當前登入使用者名稱稱,從 MapContext.Current.Parameters["user"] 對映:

TypeAdapterConfig<Poco, Dto>.NewConfig()
                            .Map(dest => dest.CreatedBy,
                                 src => MapContext.Current.Parameters["user"]);

為了動態傳遞值,需要在呼叫對映之前使用 BuildAdapter 方法,並且在這之後呼叫 AddParameters 方法新增值。

下面的例子展示瞭如何傳遞動態引數 user

var dto = poco.BuildAdapter()
              .AddParameters("user", this.User.Identity.Name)
              .AdaptToType<Dto>();
目前學習.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程
如果您認為這篇文章還不錯或者有所收穫,您可以點選右下角的【推薦】支援,或請我喝杯咖啡【讚賞】,這將是我繼續寫作,分享的最大動力!
作者:玩雙截棍的熊貓 宣告:原創部落格!請在轉載時在文章開頭註明本人部落格地址。如發現錯誤,歡迎批評指正。凡是轉載於本人的文章,不能設定打賞功能,如有特殊需求請與本人聯絡!