/// <summary> /// Iterates through all nodes in the analyzer rules tree to try to find a matching node. /// </summary> /// <param name="nodes"> /// The collection of nodes to iterate. /// </param> /// <param name="searchText"> /// The search text to match against. /// </param> /// <param name="matchHandler"> /// Performs node matching. /// </param> /// <returns> /// Returns the matching node, or null if none was found. /// </returns> private TreeNode IterateAndFindRule(TreeNodeCollection nodes, string searchText, MatchRuleHandler matchHandler) { Param.AssertNotNull(nodes, "nodes"); Param.AssertNotNull(searchText, "searchText"); Param.AssertNotNull(matchHandler, "matchHandler"); foreach (TreeNode node in nodes) { if (matchHandler(node, searchText)) { return node; } TreeNode child = this.IterateAndFindRule(node.Nodes, searchText, matchHandler); if (child != null) { return child; } } return null; }
private TreeNode IterateAndFindRule(TreeNodeCollection nodes, string searchText, MatchRuleHandler matchHandler) { foreach (TreeNode node in nodes) { if (matchHandler(node, searchText)) { return node; } TreeNode node2 = this.IterateAndFindRule(node.Nodes, searchText, matchHandler); if (node2 != null) { return node2; } } return null; }