示例#1
0
        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);
        }
示例#2
0
        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);
 }