/// <summary> /// Specification execution with input /// </summary> /// <param name="condition"></param> /// <param name="specificaiton"></param> /// <returns></returns> public RuleEngine <TResult> ValidateIf(Func <bool> condition, BaseSpecificationContainer specificaiton) { if (!condition()) { return(this); } return(Validate(specificaiton)); }
/// <summary> /// Specification container execution with input /// </summary> /// <param name="specificaiton"></param> /// <returns></returns> public RuleEngine <TResult> Validate(BaseSpecificationContainer specificaiton) { specificaiton.Use(_strategy); var result = specificaiton.Execute(); if (result.Any(x => !x.IsValid)) { _specificationErrors.AddRange(result.Where(x => !x.IsValid).Select(x => new SpecificationErrorInfo(x))); } return(this); }