[非專業翻譯] Mapster - 對映只讀屬性

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

[非專業翻譯] Mapster - 對映只讀屬性

系列介紹

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

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

正文

本文將說明 Mapster 如何對映只讀屬性

對映非公開 set 的屬性

Mapster 預設會自動對映非公開 set 的屬性:

public class Order {
    public string Id { get; set; }
    public ICollection<OrderItem> Items { get; private set; }
}

[UseDestinationValue] 特性標籤

給屬性新增特性標籤 [UseDestinationValue] ,未指定 set 的屬性也能進行對映:

public class Order {
    public string Id { get; set; }

    [UseDestinationValue]
    public ICollection<OrderItem> Items { get; } = new List<OrderItem>();
}

基於約定配置對映

如果希望所有未指定 setICollection<> 都參與對映,那麼可以使用 UseDestinationValue 方法進行配置:

TypeAdapterConfig.GlobalSettings.Default
    .UseDestinationValue(member => member.SetterModifier == AccessModifier.None &&
                                   member.Type.IsGenericType &&
                                   member.Type.GetGenericTypeDefinition() == typeof(ICollection<>));

相關文章