/// <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)); }
/// <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)); }