Exemplo n.º 1
0
        /// <summary>
        /// Executes current chain of circumstances.
        /// </summary>
        /// <returns>Chain result.</returns>
        public TResult Execute()
        {
            if (_thrownExceptions.Any())
            {
                _thrownExceptions.Clear();
            }
            LinkedListNode <Circumstance> current = _circumstances.First;

            while (current != null)
            {
                Circumstance circumstance = current.Value;
                try {
                                        #pragma warning disable S1751
                    return(circumstance.GetResult());

                                        #pragma warning restore S1751
                } catch (Exception e) {
                    bool isConditionFailed = e is Circumstance.ConditionFailedException;
                    if (!isConditionFailed)
                    {
                        _thrownExceptions.Add(e.InnerException);
                    }
                    current = current.Next;
                }
            }
            return(default(TResult));
        }