11using Linq2GraphQL . Client . Visitors ;
22using System . Linq . Expressions ;
3- using System . Reflection ;
4- using System . Reflection . Metadata . Ecma335 ;
5- using VisitorPlayground . Visitors ;
6-
73namespace Linq2GraphQL . Client ;
84
95public static class Utilities
@@ -26,182 +22,14 @@ public static string GetArgumentsId(IEnumerable<object> objects)
2622 }
2723 }
2824
29-
30-
3125 public static void ParseExpression ( Expression body , QueryNode parent )
3226 {
33-
3427 var parameterVisitor = new ParameterVisitor ( new MemberNode ( null , null ) ) ;
3528 var topNode = parameterVisitor . ParseExpression ( body ) ;
3629 var tree = topNode . PrintMemberTree ( ) ;
3730
3831 topNode . PopulateChildQueryNodes ( parent ) ;
39- // parent.SetAddPrimitiveChildren();
40-
4132
4233 }
4334
44-
45-
46- //public static void ParseExpression_OLD(Expression body, QueryNode parent)
47- //{
48- // var node = new QueryNode(parent.Member);
49- // ParseExpressionInternal(body, node);
50- // node.SetAddPrimitiveChildren();
51-
52- // foreach (var childNode in node.ChildNodes)
53- // {
54- // parent.AddChildNode(childNode);
55- // }
56- //}
57-
58- //private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression)
59- //{
60- // if (methodCallExpression.Arguments.Count != 2)
61- // {
62- // return false;
63- // }
64-
65- // ;
66- // var methodName = methodCallExpression.Method.Name;
67- // return (methodName == "Select" || methodName == "SelectMany");
68- //}
69-
70-
71- //private static void ParseExpressionInternal(Expression body, QueryNode parent)
72- //{
73- // if (body.NodeType == ExpressionType.MemberInit)
74- // {
75- // var exp = (MemberInitExpression)body;
76- // foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment)
77- // .Cast<MemberAssignment>())
78- // {
79- // ParseExpressionInternal(binding.Expression, parent);
80- // }
81- // }
82-
83- // switch (body)
84- // {
85- // case LambdaExpression lambdaExpression:
86- // ParseExpressionInternal(lambdaExpression.Body, parent);
87- // break;
88-
89- // case MemberExpression memberExpression:
90- // var (parentNode, _) = GetMemberQueryNode(memberExpression);
91- // parent.AddChildNode(parentNode);
92- // break;
93-
94- // case MethodCallExpression methodCallExp:
95- // ParseMethodCallExpression(parent, methodCallExp);
96- // break;
97-
98- // case NewExpression newExpression:
99- // foreach (var argument in newExpression.Arguments)
100- // {
101- // ParseExpression(argument, parent);
102- // }
103-
104- // break;
105- // }
106- //}
107-
108- //private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp)
109- //{
110- // var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute<GraphInterfaceAttribute>();
111- // if (graphInterfaceAttribute != null)
112- // {
113- // var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true);
114- // parent.AddChildNode(queryNode);
115- // return;
116- // }
117-
118- // var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute<GraphMethodAttribute>();
119- // if (graphMethodAttribute != null)
120- // {
121- // var arguments = new List<ArgumentValue>();
122-
123- // var i = 0;
124- // foreach (var parameter in methodCallExp.Method.GetParameters())
125- // {
126- // var graphAttribute = parameter.GetCustomAttribute<GraphArgumentAttribute>();
127- // if (graphAttribute != null)
128- // {
129- // var arg = methodCallExp.Arguments[i];
130- // ConstantExpression argConstant;
131- // if (arg.NodeType == ExpressionType.Convert)
132- // {
133- // var unaryExpression = (UnaryExpression)arg;
134- // argConstant = (ConstantExpression)unaryExpression.Operand;
135- // }
136- // else
137- // {
138- // argConstant = (ConstantExpression)arg;
139- // }
140-
141- // arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType,
142- // argConstant.Value));
143- // }
144-
145- // i++;
146- // }
147-
148- // var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments);
149- // parent.AddChildNode(queryNode);
150- // }
151- // else if (methodCallExp.IsSelectOrSelectMany())
152- // {
153- // if (methodCallExp.Arguments[0] is MemberExpression memberExpr)
154- // {
155- // var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr);
156- // ParseExpressionInternal(methodCallExp.Arguments[1], LastNode);
157- // parent.AddChildNode(ParentNode);
158- // }
159- // else
160- // {
161- // ParseExpressionInternal(methodCallExp.Arguments[1], parent);
162- // }
163- // }
164- //}
165-
166- //private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression)
167- //{
168- // var members = GetMembers(expression);
169- // if (members == null) return (null, null);
170-
171- // members.Reverse();
172-
173- // QueryNode parentNode = null;
174- // QueryNode currentNode = null;
175-
176- // foreach (var member in members)
177- // {
178- // var newNode = new QueryNode(member);
179- // if (parentNode == null)
180- // {
181- // parentNode = newNode;
182- // }
183- // else
184- // {
185- // currentNode.AddChildNode(newNode);
186- // }
187-
188- // currentNode = newNode;
189- // }
190-
191- // return (parentNode, currentNode);
192- //}
193-
194-
195- //private static List<MemberInfo> GetMembers(Expression expression)
196- //{
197- // var members = new List<MemberInfo>();
198- // if (expression.NodeType == ExpressionType.MemberAccess)
199- // {
200- // var memberExpression = (MemberExpression)expression;
201- // members.Add(memberExpression.Member);
202- // members.AddRange(GetMembers(memberExpression.Expression));
203- // }
204-
205- // return members;
206- //}
20735}
0 commit comments