public IDisposable Attach(ITreeBuilderAlgorithm <TVertex, TEdge> algorithm)
        {
            Contract.Requires(algorithm != null);

            algorithm.TreeEdge += TreeEdge;
            return(new DisposableAction(() => algorithm.TreeEdge -= TreeEdge));
        }
示例#2
0
 public IDisposable Attach(ITreeBuilderAlgorithm <TVertex, TEdge> algorithm)
 {
     algorithm.TreeEdge += new EdgeAction <TVertex, TEdge>(TreeEdge);
     return(new DisposableAction(
                () => algorithm.TreeEdge -= new EdgeAction <TVertex, TEdge>(TreeEdge)
                ));
 }
示例#3
0
        /// <inheritdoc />
        public IDisposable Attach(ITreeBuilderAlgorithm <TVertex, TEdge> algorithm)
        {
            if (algorithm is null)
            {
                throw new ArgumentNullException(nameof(algorithm));
            }

            algorithm.TreeEdge += OnEdgeDiscovered;
            return(Finally(() => algorithm.TreeEdge -= OnEdgeDiscovered));
        }
示例#4
0
 public void Detach(ITreeBuilderAlgorithm <TVertex, TEdge> algorithm)
 {
     algorithm.TreeEdge -= new EdgeEventHandler <TVertex, TEdge>(RecordEdge);
 }