public void Detach(IEdgePredecessorRecorderAlgorithm <TVertex, TEdge> algorithm) { if (algorithm == null) { throw new ArgumentNullException("algorithm"); } algorithm.DiscoverTreeEdge -= new EdgeEdgeEventHandler <TVertex, TEdge>(this.DiscoverTreeEdge); algorithm.FinishEdge -= new EdgeEventHandler <TVertex, TEdge>(this.FinishEdge); }
public IDisposable Attach(IEdgePredecessorRecorderAlgorithm <TVertex, TEdge> algorithm) { algorithm.DiscoverTreeEdge += this.DiscoverTreeEdge; algorithm.FinishEdge += this.FinishEdge; return(new DisposableAction( () => { algorithm.DiscoverTreeEdge -= this.DiscoverTreeEdge; algorithm.FinishEdge -= this.FinishEdge; })); }
/// <inheritdoc /> public IDisposable Attach(IEdgePredecessorRecorderAlgorithm <TVertex, TEdge> algorithm) { if (algorithm is null) { throw new ArgumentNullException(nameof(algorithm)); } algorithm.DiscoverTreeEdge += OnEdgeDiscovered; algorithm.FinishEdge += OnEdgeFinished; return(Finally(() => { algorithm.DiscoverTreeEdge -= OnEdgeDiscovered; algorithm.FinishEdge -= OnEdgeFinished; })); }
public void Detach(IEdgePredecessorRecorderAlgorithm <TVertex, TEdge> algorithm) { algorithm.DiscoverTreeEdge -= new EdgeEdgeEventHandler <TVertex, TEdge>(this.DiscoverTreeEdge); algorithm.FinishEdge -= new EdgeEventHandler <TVertex, TEdge>(this.FinishEdge); }