[非專業翻譯] 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>();
}
基於約定配置對映
如果希望所有未指定 set
的 ICollection<>
都參與對映,那麼可以使用 UseDestinationValue
方法進行配置:
TypeAdapterConfig.GlobalSettings.Default
.UseDestinationValue(member => member.SetterModifier == AccessModifier.None &&
member.Type.IsGenericType &&
member.Type.GetGenericTypeDefinition() == typeof(ICollection<>));