public virtual void Translate(MethodCallExpression method, ITranslationResult result) { if (method.Method.Name != _methodName) { throw new ArgumentOutOfRangeException($"Method '{nameof(method)}' is not supported"); } var expressionTranslator = new ExpressionTranslator(_nameChanges); MethodCallExpression targetMethod = method; if (method.Arguments.Count == 1 && method.Arguments[0].NodeType == ExpressionType.Call) { targetMethod = (MethodCallExpression)method.Arguments[0]; } expressionTranslator.Translate(result, targetMethod); expressionTranslator.AddPostProcessing(method); }
public virtual void Translate(MethodCallExpression method, ITranslationResult result) { if (method.Method.Name != _methodName) { string message = string.Format(Resources.TranslatorMethodNotSupported, method.Method.Name); throw new ArgumentOutOfRangeException(nameof(method), message); } var expressionTranslator = new ExpressionTranslator(_nameChanges); MethodCallExpression targetMethod = method; if (method.Arguments.Count == 1 && method.Arguments[0].NodeType == ExpressionType.Call) { targetMethod = (MethodCallExpression)method.Arguments[0]; } expressionTranslator.Translate(result, targetMethod); expressionTranslator.AddPostProcessing(method); }