[非專業翻譯] Mapster - 對映忽略

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

[非專業翻譯] Mapster - 對映忽略

系列介紹

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

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

正文

本文將說明 Mapster 的 對映忽略成員

基本的對映忽略

Mapster 預設會自動對映所有符合規則的成員。如果想要在對映時忽略某一個成員,可以使用 Ignore 方法進行配置:

TypeAdapterConfig<TSource, TDestination>
    .NewConfig()
    .Ignore(dest => dest.Id);

基於規則的對映忽略

使用 IgnoreMember 方法可以根據某個條件決定是否對映成員:

TypeAdapterConfig.GlobalSettings.Default
    .IgnoreMember((member, side) => !validTypes.Contains(member.Type));

更多資訊請參閱 基於規則對映成員

忽略未顯示對映的成員

使用 IgnoreNonMapped 方法可以忽略所有未顯示配置對映的成員。

例如,只對映 IdName

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);

相關文章