in src/Epam.GraphQL/Helpers/ExpressionRewriter.cs [80:118]
protected override Expression VisitMember(MemberExpression node)
{
var newExpression = node.Expression as NewExpression;
if (newExpression == null)
{
var memberInitExpression = node.Expression as MemberInitExpression;
if (memberInitExpression == null
&& node.Expression is UnaryExpression unaryExpression
&& unaryExpression.NodeType == ExpressionType.TypeAs)
{
newExpression = unaryExpression.Operand as NewExpression;
if (newExpression == null)
{
memberInitExpression = unaryExpression.Operand as MemberInitExpression;
}
}
if (memberInitExpression != null)
{
var binding = memberInitExpression.Bindings.FirstOrDefault(binding => binding.Member == node.Member);
if (binding is not null and MemberAssignment memberAssignment)
{
return memberAssignment.Expression;
}
}
}
if (newExpression != null && newExpression.Members != null)
{
var indexOfMember = newExpression.Members.IndexOf(node.Member);
return newExpression.Arguments[indexOfMember];
}
return base.VisitMember(node);
}