22using Linq2GraphQL . Client . Visitors ;
33using System . Linq . Expressions ;
44using System . Reflection ;
5+ using System . Reflection . Metadata ;
56using System . Runtime . CompilerServices ;
7+ using System . Xml . Linq ;
68
79namespace VisitorPlayground . Visitors
810{
@@ -24,15 +26,28 @@ protected override Expression VisitMember(MemberExpression node)
2426 if ( attribute != null )
2527 {
2628 var parameter = GetParameterExpression ( node ) ;
27- var targetNode = memberNode . GetMemberNodeFromParameterExpression ( parameter ) ;
28- targetNode . AddMembers ( node ) ;
29+
30+ AddMemberNodes ( parameter , node ) ;
31+
32+ // var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter);
33+ // targetNode.AddMembers(node);
2934 }
3035
3136 return node ;
3237
3338 }
3439
3540
41+ public MemberNode AddMemberNodes ( ParameterExpression targetParameter , Expression expression )
42+ {
43+ var targetNode = memberNode . GetMemberNodeFromParameterExpression ( targetParameter ) ;
44+ var newNode = targetNode . AddMembers ( expression ) ;
45+ return newNode ;
46+
47+ }
48+
49+
50+
3651 protected override Expression VisitMethodCall ( MethodCallExpression expression )
3752 {
3853 var attribute = expression . Method . GetCustomAttribute < GraphQLMemberAttribute > ( ) ;
@@ -57,6 +72,8 @@ protected override Expression VisitMethodCall(MethodCallExpression expression)
5772 i ++ ;
5873 }
5974
75+
76+
6077 var targetNode = memberNode . GetMemberNodeFromParameterExpression ( parExp ) ;
6178 targetNode . AddChild ( new MemberNode ( expression . Method , argumentValues ) ) ;
6279
@@ -74,11 +91,12 @@ protected override Expression VisitMethodCall(MethodCallExpression expression)
7491 {
7592 var parameter = GetParameterExpression ( expression . Arguments [ 1 ] ) ;
7693
77- //var child = new MemberNode(memberExp.Member, null, parameter);
78- //memberNode.AddChild(child);
79-
8094 var child = memberNode . AddMembers ( memberExp ) ;
8195 child . SetParameterExpression ( parameter ) ;
96+
97+
98+ //var child = AddMemberNodes(parameter, memberExp);
99+ //child.IncludePrimitive = false;
82100
83101 var visitor = new ParameterVisitor ( child ) ;
84102 visitor . ParseExpression ( expression . Arguments [ 1 ] ) ;
0 commit comments