public IDisposable Attach(IVertexPredecessorRecorderAlgorithm <TVertex, TEdge> algorithm)
 {
     algorithm.TreeEdge     += new EdgeAction <TVertex, TEdge>(TreeEdge);
     algorithm.FinishVertex += new VertexAction <TVertex>(FinishVertex);
     return(new DisposableAction(
                () =>
     {
         algorithm.TreeEdge -= new EdgeAction <TVertex, TEdge>(TreeEdge);
         algorithm.FinishVertex -= new VertexAction <TVertex>(FinishVertex);
     }));
 }
 public IDisposable Attach(IVertexPredecessorRecorderAlgorithm <TVertex, TEdge> algorithm)
 {
     algorithm.TreeEdge     += TreeEdge;
     algorithm.FinishVertex += FinishVertex;
     return(new DisposableAction(
                () =>
     {
         algorithm.TreeEdge -= TreeEdge;
         algorithm.FinishVertex -= FinishVertex;
     }));
 }
        /// <inheritdoc />
        public IDisposable Attach(IVertexPredecessorRecorderAlgorithm <TVertex, TEdge> algorithm)
        {
            if (algorithm is null)
            {
                throw new ArgumentNullException(nameof(algorithm));
            }

            algorithm.TreeEdge     += OnEdgeDiscovered;
            algorithm.FinishVertex += OnVertexFinished;
            return(Finally(() =>
            {
                algorithm.TreeEdge -= OnEdgeDiscovered;
                algorithm.FinishVertex -= OnVertexFinished;
            }));
        }
Пример #4
0
 public void Detach(IVertexPredecessorRecorderAlgorithm <TVertex, TEdge> algorithm)
 {
     algorithm.StartVertex  -= new VertexEventHandler <TVertex>(StartVertex);
     algorithm.TreeEdge     -= new EdgeEventHandler <TVertex, TEdge>(TreeEdge);
     algorithm.FinishVertex -= new VertexEventHandler <TVertex>(FinishVertex);
 }