-
Notifications
You must be signed in to change notification settings - Fork 392
Closed
Description
Mapster.Tool does not properly handle situation when both UseDestinationValue() and AddDestinationTransform() is used and generates coalesce (??) on void collection copy method.
Example:
Declaration:
public class Src
{
public IList<string> ListWithGetOnly { get; } = new List<string>();
}
public class Dst
{
public List<string> ListWithGetOnly { get; } = new List<string>();
}Mapper configuration:
config.Default
.UseDestinationValue(member => member.SetterModifier == AccessModifier.None &&
member.Type.IsGenericType &&
IsAssignableToGeneric(member.Type, typeof(ICollection<>)))
.AddDestinationTransform(DestinationTransform.EmptyCollectionIfNull);
config.ForType<Src, Dst>()
.GenerateMapper(MapType.Map);What gets generated:
public static MapLib.MapTest.Dst AdaptToDst(this MapLib.MapTest.Src p1)
{
if (p1 == null)
{
return null;
}
MapLib.MapTest.Dst result = new MapLib.MapTest.Dst();
funcMain1(p1.ListWithGetOnly, result.ListWithGetOnly) ?? new System.Collections.Generic.List<string>();
return result;
}
private static System.Collections.Generic.List<string> funcMain1(System.Collections.Generic.IList<string> p2, System.Collections.Generic.List<string> p3)
{
...
}Sample project:
MapsterBug-DestinationTransform.zip
Metadata
Metadata
Assignees
Labels
No labels