Beispiel #1
0
        /// <summary>
        /// Applies the conditions to a fact to obtain the an executed consequence
        /// </summary>
        /// <param name="fact">The fact to apply the rules to</param>
        /// <returns>Executed chosen consequence</returns>
        public virtual TOutput ExecuteFact(TFact fact)
        {
            var validRules = RuleList.Select(rule => rule.Value)
                             .Where(rule => rule.Condition(fact));

            if (validRules.Any())
            {
                return(Prioritizer.GetHighestPriorityOutput(validRules, fact));
            }
            else
            {
                return(default(TOutput));
            }
        }