@@ -43,6 +43,12 @@ src is LambdaExpression lambda
4343 from src in sources
4444 select fn ( src , destinationMember , arg ) )
4545 . FirstOrDefault ( result => result != null ) ;
46+ if ( getter is MemberExpression mem && mem ? . Expression ? . Type == source . Type )
47+ {
48+ getter = Expression . PropertyOrField ( source , mem . Member . Name ) ;
49+ }
50+
51+ var test = resolvers . Where ( ValueAccessingStrategy . CustomResolvers . Contains ) ;
4652
4753 if ( arg . MapType == MapType . Projection && getter != null )
4854 {
@@ -103,6 +109,10 @@ select fn(src, destinationMember, arg))
103109 var nextResolvers = arg . Settings . Resolvers . Next ( arg . Settings . Ignore , ( ParameterExpression ) source , destinationMember . Name )
104110 . ToList ( ) ;
105111
112+ var overideSettings = arg . Settings . Resolvers
113+ . Where ( x => x . DestinationMemberName == destinationMember . Name && x . OvverideSettings != null )
114+ . Select ( x=> x . OvverideSettings ) . FirstOrDefault ( ) ;
115+
106116 var propertyModel = new MemberMapping
107117 {
108118 DestinationMember = destinationMember ,
@@ -112,6 +122,7 @@ select fn(src, destinationMember, arg))
112122 Source = ( ParameterExpression ) source ,
113123 Destination = ( ParameterExpression ? ) destination ,
114124 UseDestinationValue = IsCanUsingDestinationValue ( arg , destinationMember ) ,
125+ OverrideSettings = overideSettings
115126 } ;
116127 if ( arg . MapType == MapType . ApplyNullPropagation &&
117128 getter == null && ! arg . DestinationType . IsRecordType ( )
@@ -264,6 +275,7 @@ protected Expression CreateInstantiationExpression(Expression source, ClassMappi
264275 else
265276 getter = member . Getter
266277 . ApplyNullPropagationFromCtor ( CreateAdaptExpressionCore ( member . Getter , member . DestinationMember . Type , arg , member ) , arg ) ;
278+
267279
268280
269281 if ( member . Ignore . Condition != null )
@@ -282,6 +294,7 @@ protected Expression CreateInstantiationExpression(Expression source, ClassMappi
282294 if ( arg . MapType == MapType . MapToTarget && arg . DestinationType . IsRecordType ( ) )
283295 getter = TryRestoreRecordMember ( member . DestinationMember , recordRestorParamModel , destination ) ?? getter ;
284296 }
297+
285298 }
286299 arguments . Add ( getter ) ;
287300 }
0 commit comments