[非專業翻譯] Mapster - 對映忽略
系列介紹
[非專業翻譯] 是對沒有中文文件進行翻譯的系列部落格,文章由機翻和譯者自己理解構成,和原文相比有所有不同,但意思基本一致。
因個人能力有限,如有謬誤之處還請指正,多多包涵。
正文
本文將說明 Mapster 的 對映忽略成員
基本的對映忽略
Mapster 預設會自動對映所有符合規則的成員。如果想要在對映時忽略某一個成員,可以使用 Ignore
方法進行配置:
TypeAdapterConfig<TSource, TDestination>
.NewConfig()
.Ignore(dest => dest.Id);
基於規則的對映忽略
使用 IgnoreMember
方法可以根據某個條件決定是否對映成員:
TypeAdapterConfig.GlobalSettings.Default
.IgnoreMember((member, side) => !validTypes.Contains(member.Type));
更多資訊請參閱 基於規則對映成員
忽略未顯示對映的成員
使用 IgnoreNonMapped
方法可以忽略所有未顯示配置對映的成員。
例如,只對映 Id
和 Name
:
TypeAdapterConfig<TSource, TDestination>
.NewConfig()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.Name, src => src.Name)
.IgnoreNonMapped(true);
通過特性標籤配置對映忽略
當一個成員有 [AdaptIgnore]
特性標記時,這個成員將不會被對映:
public class Product {
public string Id { get; set; }
public string Name { get; set; }
[AdaptIgnore]
public decimal Price { get; set; }
}
更多資訊請參閱 使用特性標籤配置對映
不對映滿足條件的成員
使用 IgnoreIf
方法,當滿足條件時將忽略此成員的對映:
TypeAdapterConfig<TSource, TDestination>
.NewConfig()
.IgnoreIf((src, dest) => !string.IsNullOrEmpty(dest.Name), dest => dest.Name);
不對映空值成員
Mapster 預設對映時會將 源物件的所有成員對映到目標物件,如果不想對映空值,那麼可以使用 IgnoreNullValues
方法進行配置:
TypeAdapterConfig<TSource, TDestination>
.NewConfig()
.IgnoreNullValues(true);