/// <summary> /// Processes the given expression. /// </summary> /// <param name="expression">The expression to process.</param> /// <param name="element">The parent element.</param> /// <param name="validPrefixes">The list of acceptable Hungarian-type prefixes.</param> private void ProcessExpression(Expression expression, Element element, Dictionary <string, string> validPrefixes) { Param.AssertNotNull(expression, "expression"); Param.AssertNotNull(element, "element"); Param.AssertNotNull(validPrefixes, "validPrefixes"); // Check the type of the expression. if (expression.ExpressionType == ExpressionType.AnonymousMethod) { AnonymousMethodExpression anonymousMethod = (AnonymousMethodExpression)expression; // Check the anonymous method's variables. VariableCollection variables = anonymousMethod.Variables; if (variables != null) { foreach (IVariable variable in variables) { this.CheckMethodVariablePrefix(variable, element, validPrefixes); } // Check the statements under the anonymous method. if (anonymousMethod.Children.StatementCount > 0) { for (Statement statement = anonymousMethod.FindFirstChildStatement(); statement != null; statement = statement.FindNextSiblingStatement()) { this.ProcessStatement(statement, element, validPrefixes); } } } } // Check the child expressions under this expression. if (expression.Children.StatementCount > 0) { for (Expression childExpression = expression.FindFirstChildExpression(); childExpression != null; childExpression = childExpression.FindNextSiblingExpression()) { this.ProcessExpression(childExpression, element, validPrefixes); } } }