Exemple #1
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (!(obj is NameVerbValueFact))
            {
                return(false);
            }

            NameVerbValueFact fact = (NameVerbValueFact)obj;

            if (this.name != fact.name)
            {
                return(false);
            }

            if (this.verb != fact.verb)
            {
                return(false);
            }

            if (this.value == null)
            {
                return(fact.value == null);
            }

            if (!this.value.Equals(fact.value))
            {
                return(false);
            }

            return(true);
        }
Exemple #2
0
        private void ProcessRetractedFact(NameVerbValueFact fact)
        {
            IList<Rule> newretracted = new List<Rule>();

            foreach (var rule in this.fired)
                if (rule.Conditions.Any(c => c is NameVerbValueFact && ((NameVerbValueFact)c).Name == fact.Name))
                    if (rule.RetractIfNotReady(this))
                        newretracted.Add(rule);

            foreach (var rule in newretracted)
            {
                this.fired.Remove(rule);
                this.notfired.Add(rule);
            }
        }