Ejemplo n.º 1
0
 private static void FindAllReferencedResources(DocumentNode node, List <DocumentNode> foundResources, Stack <DocumentNodePath> resourceReferenceTree, ResourceHelper.PostOrderOperation postOrderOperation)
 {
     foreach (DocumentNode documentNode1 in node.SelectDescendantNodes(new Predicate <DocumentNode>(ResourceHelper.FilterResources)))
     {
         DocumentNodePath context1 = new DocumentNodePath(node.DocumentRoot.RootNode, documentNode1);
         resourceReferenceTree.Push(context1);
         DocumentNode documentNode2 = (DocumentNode)null;
         if (DocumentNodeUtilities.IsDynamicResource(documentNode1))
         {
             foreach (DocumentNodePath context2 in resourceReferenceTree)
             {
                 documentNode2 = new ExpressionEvaluator((IDocumentRootResolver)context2.Node.Context).EvaluateExpression(context2, documentNode1);
                 if (documentNode2 != null)
                 {
                     break;
                 }
             }
         }
         else
         {
             documentNode2 = new ExpressionEvaluator((IDocumentRootResolver)context1.Node.Context).EvaluateExpression(context1, documentNode1);
         }
         if (documentNode2 != null && !ResourceHelper.IsResourceCached(documentNode2, foundResources))
         {
             foundResources.Add(documentNode2);
             ResourceHelper.FindAllReferencedResources(documentNode2, foundResources, resourceReferenceTree, postOrderOperation);
             if (postOrderOperation != null)
             {
                 postOrderOperation(documentNode2);
             }
         }
         resourceReferenceTree.Pop();
     }
 }
Ejemplo n.º 2
0
 internal static void FindAllReferencedResources(DocumentNode node, List <DocumentNode> foundResources, ResourceHelper.PostOrderOperation postOrderOperation)
 {
     ResourceHelper.FindAllReferencedResources(node, foundResources, new Stack <DocumentNodePath>(), postOrderOperation);
 }