public override sealed void VisitLogNodes(IDependencyAnalyzerLogNodeVisitor<DependencyContextType> logNodeVisitor) { foreach (DependencyNodeCore<DependencyContextType> node in MarkedNodesEnumerable()) { logNodeVisitor.VisitNode(node); } _marker.VisitLogNodes(MarkedNodesEnumerable(), logNodeVisitor); }
void IDependencyAnalysisMarkStrategy <DependencyContextType> .VisitLogNodes(IEnumerable <DependencyNodeCore <DependencyContextType> > nodeList, IDependencyAnalyzerLogNodeVisitor logNodeVisitor) { HashSet <Tuple <DependencyNode, DependencyNode> > combinedNodesReported = new HashSet <Tuple <DependencyNode, DependencyNode> >(); if (_reasonStringOnlyNodes != null) { foreach (string reasonOnly in _reasonStringOnlyNodes) { logNodeVisitor.VisitRootNode(reasonOnly); } } foreach (DependencyNodeCore <DependencyContextType> node in nodeList) { if (node.Marked) { HashSet <MarkData> nodeReasons = (HashSet <MarkData>)node.GetMark(); foreach (MarkData markData in nodeReasons) { if (markData.Reason2 != null) { Tuple <DependencyNode, DependencyNode> combinedNode = new Tuple <DependencyNode, DependencyNode>(markData.Reason1, markData.Reason2); if (!combinedNodesReported.Contains(combinedNode)) { logNodeVisitor.VisitCombinedNode(combinedNode); } } } } } }
/// <summary> /// Used to walk all nodes that should be emitted to a log. Not intended for other purposes. /// </summary> /// <param name="logNodeVisitor"></param> public abstract void VisitLogNodes(IDependencyAnalyzerLogNodeVisitor <DependencyContextType> logNodeVisitor);
void IDependencyAnalysisMarkStrategy <DependencyContextType> .VisitLogNodes(IEnumerable <DependencyNodeCore <DependencyContextType> > nodeList, IDependencyAnalyzerLogNodeVisitor <DependencyContextType> logNodeVisitor) { // This marker does not permit logging. return; }
/// <summary> /// Used to walk all nodes that should be emitted to a log. Not intended for other purposes. /// </summary> /// <param name="logNodeVisitor"></param> public abstract void VisitLogNodes(IDependencyAnalyzerLogNodeVisitor logNodeVisitor);