[非專業翻譯] 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);
