/// <summary> /// /// </summary> /// <param name="expr"></param> /// <param name="callExpression"></param> /// <returns></returns> internal static bool TryMatchLocalExpression(Expression expr, out MethodCallExpression callExpression) { bool result; try { LocalDMSExpressionChecker localExpressionChecker = new LocalDMSExpressionChecker(); Expression exprCopy = localExpressionChecker.Visit(expr); result = localExpressionChecker._foundSpecialMethod; if (result) { callExpression = exprCopy as MethodCallExpression; } else { callExpression = null; } } catch (Exception arg) { Console.WriteLine("TryMatchLocalExpression failed: " + arg); throw; } return(result); }
/// <summary> /// /// </summary> /// <param name="expr"></param> /// <param name="funcReturningObj"></param> /// <returns></returns> internal static bool TryMatchLocalExpression(Expression expr, out FunctionReturningObject funcReturningObj) { bool result; try { LocalDMSExpressionChecker localExpressionChecker = new LocalDMSExpressionChecker(); localExpressionChecker.Visit(expr); bool flag = !localExpressionChecker._foundParameter && !localExpressionChecker._foundSpecialMethod && localExpressionChecker._foundConstant; if (flag) { funcReturningObj = LocalDMSExpressionChecker.CompileLocalExpression(expr); } else { funcReturningObj = null; } result = flag; } catch (Exception arg) { System.Diagnostics.Debug.WriteLine("TryMatchLocalExpression failed: " + arg); throw; } return(result); }