TransactionalNodeService.Common.AndEdgeCondOp.EvaluateCondition C# (CSharp) Method

EvaluateCondition() public method

public EvaluateCondition ( IMapElement mapElement ) : EdgeResult
mapElement IMapElement
return EdgeResult
        public EdgeResult EvaluateCondition(IMapElement mapElement)
        {
            bool isEdge = true;
            bool isIncluded = false;
            bool hasValidCondition = false;

            foreach (IEdgeCondOp conditionOperation in ConditionOperations)
            {
                EdgeResult evalResult = conditionOperation.EvaluateCondition(mapElement);

                /// If the operation we were given has a null Condition then we don't want to include this as it will dirty our result.
                if (evalResult.IsEdge.HasValue)
                {
                    hasValidCondition = true;
                    isEdge &= evalResult.IsEdge.Value;
                    isIncluded |= evalResult.IsIncluded;

                    /// This is just to squeeze a little more performance. If isEdge is false and isIncluded is true
                    /// then we can safely assume nothing will further change these values (consider the AND and OR
                    /// operators being used for each) and so we can end early.
                    if (!isEdge && isIncluded)
                    {
                        break;
                    }
                }
            }

            if (hasValidCondition)
            {
                return new EdgeResult() { IsEdge = isEdge, IsIncluded = isIncluded };
            }
            else
            {
                return new EdgeResult() { IsEdge = null, IsIncluded = false };
            }
        }
    }