Skip to content

Mapping readonly prop

chaowlert edited this page Feb 2, 2020 · 1 revision

Non public setter

Mapster can map to non public setter automatically.

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

Using UseDestinationValue attribute

You can make your type pure readonly and annotate with [UseDestinationValue].

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

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

Convention based setup

Or you can apply without annotate each type, for example, if you would like all readonly ICollection<> to use destination value.

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