Ejemplo n.º 1
0
        /// <summary>
        /// Internal ctor that allows for overriding the default continue strategy.
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="continueStrategy"></param>
        internal SelectorTreeNode(IEnumerable <TreeNode <TContextType> > nodes, ICompositeContinuationStrategy continueStrategy)
            : base(nodes)
        {
            if (continueStrategy == null)
            {
                throw new ArgumentNullException(nameof(continueStrategy));
            }

            EvaluationEnumerator = new EvaluationEnumeratorMediator <TContextType>(CompositionNodes.GetEnumerator(), continueStrategy);
        }
        internal EvaluationEnumeratorMediator(IEnumerator <IContextEvaluable <TContextType> > enumerator, ICompositeContinuationStrategy continuationStrategy)
        {
            if (enumerator == null)
            {
                throw new ArgumentNullException(nameof(enumerator));
            }
            if (continuationStrategy == null)
            {
                throw new ArgumentNullException(nameof(continuationStrategy));
            }

            AsyncNodeEnumerator  = enumerator;
            ContinuationStrategy = continuationStrategy;

            //Start the enumerator
            AsyncNodeEnumerator.MoveNext();

            //Add the internal reset to the OnReset delegate
            OnReset += ResetEnumerator;
        }
 /// <summary>
 /// Internal ctor that allows for overriding the default continue strategy.
 /// </summary>
 /// <param name="nodes"></param>
 /// <param name="continueStrategy"></param>
 internal PrioritySequenceTreeNode(IEnumerable <TreeNode <TContextType> > nodes, ICompositeContinuationStrategy continueStrategy)
     : base(nodes, continueStrategy)
 {
 }