Пример #1
0
        /// <inheritdoc/>
        public virtual void AddParameter(IFactParameter parameter)
        {
            if (_parameters == null)
            {
                _parameters = new List <IFactParameter>();
            }
            else if (_parameters.Exists(param => param.Code.Equals(parameter.Code, StringComparison.Ordinal)))
            {
                throw new ArgumentException($"FactParameter with {parameter.Code} code already contained.");
            }

            _parameters.Add(parameter);
        }
        /// <summary>
        /// Checking the equality of fact parameters.
        /// </summary>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <returns></returns>
        public static bool EqualsFactParameters(IFactParameter first, IFactParameter second)
        {
            if (first == null)
            {
                return(second == null);
            }
            else if (second == null)
            {
                return(false);
            }
            else if (first == second)
            {
                return(true);
            }

            if (first.Code == null)
            {
                return(second.Code == null);
            }
            else if (second.Code == null)
            {
                return(false);
            }
            else if (!first.Code.Equals(second.Code, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            if (first.Value == null)
            {
                return(second.Value == null);
            }
            else if (second.Value == null)
            {
                return(false);
            }

            if (first.Value is ISpecialFact xSpecialFact)
            {
                return(second.Value is ISpecialFact ySpecialFact && xSpecialFact.EqualsInfo(ySpecialFact));
            }
            else if (second.Value is ISpecialFact)
            {
                return(false);
            }

            return(first.Value.Equals(second.Value));
        }
Пример #3
0
 /// <summary>
 /// Checking the equality of fact parameters.
 /// </summary>
 /// <typeparam name="TWantAction"></typeparam>
 /// <typeparam name="TFactContainer"></typeparam>
 /// <param name="first"></param>
 /// <param name="second"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public virtual bool EqualsFactParameters <TWantAction, TFactContainer>(IFactParameter first, IFactParameter second, IWantActionContext <TWantAction, TFactContainer> context)
     where TWantAction : IWantAction
     where TFactContainer : IFactContainer
 {
     return(FactEqualityComparer.EqualsFactParameters(first, second));
 }