public static void DependencyVisitor <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> (GraphCursor <TSinkItem, TSinkEdge> sink, Action <TSinkItem> visit, GraphEventType eventType) where TSinkEdge : IEdge <TSinkItem>, TSinkItem where TSourceEdge : IEdge <TSourceItem>, TSourceItem { var graphPair = sink.Graph.Source <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> (); if (graphPair == null) { return; } var sourceGraph = graphPair.Source; var sourceItem = sink.Graph.SourceItemOf <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> (sink.Cursor); if (sourceGraph == null || sourceItem == null) { return; } Registry.Pooled <GraphDepencencies <TSourceItem, TSourceEdge> > () .VisitItems( GraphCursor.Create(sourceGraph, sourceItem), source => { if (graphPair.Source2Sink.ContainsKey(source)) { visit(graphPair.Get(source)); } }, eventType); }
public virtual void VisitItems( GraphCursor <TItem, TEdge> graphCursor, Action <TItem> visit, GraphEventType eventType) { if (Visitor != null) { Visitor(graphCursor, visit, eventType); } }