@@ -12,7 +12,7 @@ namespace AutoMapper.Utils
1212 public static class CollectionMapperExtensions
1313 {
1414 internal static Expression MapCollectionExpression ( this IConfigurationProvider configurationProvider ,
15- ProfileMap profileMap , PropertyMap propertyMap , Expression sourceExpression ,
15+ ProfileMap profileMap , IMemberMap memberMap , Expression sourceExpression ,
1616 Expression destExpression , Expression contextExpression , Func < Expression , Expression > conditionalExpression , Type ifInterfaceType , MapItem mapItem )
1717 {
1818 var passedDestination = Variable ( destExpression . Type , "passedDestination" ) ;
@@ -21,12 +21,12 @@ internal static Expression MapCollectionExpression(this IConfigurationProvider c
2121 var sourceElementType = TypeHelper . GetElementType ( sourceExpression . Type ) ;
2222 ParameterExpression itemParam ;
2323
24- var itemExpr = mapItem ( configurationProvider , profileMap , propertyMap , sourceExpression . Type , passedDestination . Type , contextExpression , out itemParam ) ;
24+ var itemExpr = mapItem ( configurationProvider , profileMap , memberMap , sourceExpression . Type , passedDestination . Type , contextExpression , out itemParam ) ;
2525
2626 var destinationElementType = itemExpr . Type ;
2727 var destinationCollectionType = typeof ( ICollection < > ) . MakeGenericType ( destinationElementType ) ;
2828 var addMethod = destinationCollectionType . GetDeclaredMethod ( "Add" ) ;
29- var destination = propertyMap ? . UseDestinationValue == true ? passedDestination : newExpression ;
29+ var destination = memberMap ? . UseDestinationValue == true ? passedDestination : newExpression ;
3030 var addItems = ForEach ( sourceExpression , itemParam , Call ( destination , addMethod , itemExpr ) ) ;
3131
3232 var mapExpr = Block ( addItems , destination ) ;
@@ -41,7 +41,7 @@ internal static Expression MapCollectionExpression(this IConfigurationProvider c
4141 Assign ( newExpression , passedDestination . Type . NewExpr ( ifInterfaceType ) ) ) ,
4242 Condition ( Equal ( sourceExpression , Constant ( null ) ) , ToType ( ifNullExpr , passedDestination . Type ) , ToType ( mapExpr , passedDestination . Type ) )
4343 ) ;
44- if ( propertyMap != null )
44+ if ( memberMap != null )
4545 {
4646 return checkNull ;
4747 }
@@ -72,23 +72,23 @@ internal static Expression NewExpr(this Type baseType, Type ifInterfaceType)
7272 }
7373
7474 public delegate Expression MapItem ( IConfigurationProvider configurationProvider , ProfileMap profileMap ,
75- PropertyMap propertyMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam ) ;
75+ IMemberMap memberMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam ) ;
7676
7777 internal static Expression MapItemExpr ( this IConfigurationProvider configurationProvider , ProfileMap profileMap ,
78- PropertyMap propertyMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam )
78+ IMemberMap memberMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam )
7979 {
8080 var sourceElementType = TypeHelper . GetElementType ( sourceType ) ;
8181 var destElementType = TypeHelper . GetElementType ( destType ) ;
8282 itemParam = Parameter ( sourceElementType , "item" ) ;
8383
8484 var typePair = new TypePair ( sourceElementType , destElementType ) ;
8585
86- var itemExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePair , itemParam , contextParam , propertyMap ) ;
86+ var itemExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePair , itemParam , contextParam , memberMap ) ;
8787 return ToType ( itemExpr , destElementType ) ;
8888 }
8989
9090 internal static Expression MapKeyPairValueExpr ( this IConfigurationProvider configurationProvider ,
91- ProfileMap profileMap , PropertyMap propertyMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam )
91+ ProfileMap profileMap , IMemberMap memberMap , Type sourceType , Type destType , Expression contextParam , out ParameterExpression itemParam )
9292 {
9393 var sourceElementTypes = TypeHelper . GetElementTypes ( sourceType , ElementTypeFlags . BreakKeyValuePair ) ;
9494 var destElementTypes = TypeHelper . GetElementTypes ( destType , ElementTypeFlags . BreakKeyValuePair ) ;
@@ -100,8 +100,8 @@ internal static Expression MapKeyPairValueExpr(this IConfigurationProvider confi
100100 itemParam = Parameter ( sourceElementType , "item" ) ;
101101 var destElementType = typeof ( KeyValuePair < , > ) . MakeGenericType ( destElementTypes ) ;
102102
103- var keyExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePairKey , Property ( itemParam , "Key" ) , contextParam , propertyMap ) ;
104- var valueExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePairValue , Property ( itemParam , "Value" ) , contextParam , propertyMap ) ;
103+ var keyExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePairKey , Property ( itemParam , "Key" ) , contextParam , memberMap ) ;
104+ var valueExpr = ExpressionBuilder . MapExpression ( configurationProvider , profileMap , typePairValue , Property ( itemParam , "Value" ) , contextParam , memberMap ) ;
105105 var keyPair = New ( destElementType . GetConstructors ( ) . First ( ) , keyExpr , valueExpr ) ;
106106 return keyPair ;
107107 }
@@ -116,7 +116,7 @@ public class CollectionMapper : IObjectMapper
116116 {
117117 public bool IsMatch ( TypePair context ) => context . SourceType . IsEnumerableType ( ) && context . DestinationType . IsCollectionType ( ) ;
118118
119- public Expression MapExpression ( IConfigurationProvider configurationProvider , ProfileMap profileMap , PropertyMap propertyMap , Expression sourceExpression , Expression destExpression , Expression contextExpression )
120- => configurationProvider . MapCollectionExpression ( profileMap , propertyMap , sourceExpression , destExpression , contextExpression , CollectionMapperExtensions . IfNotNull , typeof ( List < > ) , CollectionMapperExtensions . MapItemExpr ) ;
119+ public Expression MapExpression ( IConfigurationProvider configurationProvider , ProfileMap profileMap , IMemberMap memberMap , Expression sourceExpression , Expression destExpression , Expression contextExpression )
120+ => configurationProvider . MapCollectionExpression ( profileMap , memberMap , sourceExpression , destExpression , contextExpression , CollectionMapperExtensions . IfNotNull , typeof ( List < > ) , CollectionMapperExtensions . MapItemExpr ) ;
121121 }
122122}
0 commit comments