@@ -7,40 +7,32 @@ namespace AutoMapper.Extensions.ExpressionMapping
77{
88 internal class PrependParentNameVisitor : ExpressionVisitor
99 {
10- public PrependParentNameVisitor ( Type currentParameterType , string parentFullName , Expression newParameter )
10+ public PrependParentNameVisitor ( ParameterExpression currentParameter , string parentFullName , Expression newParameter )
1111 {
12- CurrentParameterType = currentParameterType ;
12+ CurrentParameter = currentParameter ;
1313 ParentFullName = parentFullName ;
1414 NewParameter = newParameter ;
1515 }
1616
17- public Type CurrentParameterType { get ; }
17+ public ParameterExpression CurrentParameter { get ; }
1818 public string ParentFullName { get ; }
19- public Expression NewParameter { get ; }
19+ public Expression NewParameter { get ; }
2020
2121 protected override Expression VisitMember ( MemberExpression node )
2222 {
2323 if ( node . NodeType == ExpressionType . Constant )
2424 return base . VisitMember ( node ) ;
2525
26- string sourcePath ;
27-
28- var parameterExpression = node . GetParameterExpression ( ) ;
29- var sType = parameterExpression ? . Type ;
30- if ( sType != null && sType == CurrentParameterType && node . IsMemberExpression ( ) )
31- {
32- sourcePath = node . GetPropertyFullName ( ) ;
33- }
34- else
35- {
26+ if ( ! object . ReferenceEquals ( CurrentParameter , node . GetParameterExpression ( ) ) || ! node . IsMemberExpression ( ) )
3627 return base . VisitMember ( node ) ;
37- }
38-
39- var fullName = string . IsNullOrEmpty ( ParentFullName )
40- ? sourcePath
41- : string . Concat ( ParentFullName , "." , sourcePath ) ;
4228
43- return ExpressionHelpers . MemberAccesses ( fullName , NewParameter ) ;
29+ return ExpressionHelpers . MemberAccesses
30+ (
31+ string . IsNullOrEmpty ( ParentFullName )
32+ ? node . GetPropertyFullName ( )
33+ : $ "{ ParentFullName } .{ node . GetPropertyFullName ( ) } ",
34+ NewParameter
35+ ) ;
4436 }
4537 }
4638}
0 commit comments