in src/Elastic.Clients.Elasticsearch/_Shared/Core/Infer/Field/ToStringExpressionVisitor.cs [48:82]
protected override Expression VisitMethodCall(MethodCallExpression methodCall)
{
if (methodCall.Method.Name == nameof(SuffixExtensions.Suffix) && methodCall.Arguments.Any())
{
VisitConstantOrVariable(methodCall, _stack);
var callingMember = new ReadOnlyCollection<Expression>(
new List<Expression> { { methodCall.Arguments.First() } }
);
Visit(callingMember);
return methodCall;
}
else if (methodCall.Method.Name == "get_Item" && methodCall.Arguments.Any())
{
var t = methodCall.Object.Type;
var isDict =
typeof(IDictionary).IsAssignableFrom(t)
|| typeof(IDictionary<,>).IsAssignableFrom(t)
|| t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IDictionary<,>);
if (!isDict)
return base.VisitMethodCall(methodCall);
VisitConstantOrVariable(methodCall, _stack);
Visit(methodCall.Object);
return methodCall;
}
else if (IsLinqOperator(methodCall.Method))
{
for (var i = 1; i < methodCall.Arguments.Count; i++)
Visit(methodCall.Arguments[i]);
Visit(methodCall.Arguments[0]);
return methodCall;
}
return base.VisitMethodCall(methodCall);
}