public EntityValidationHelper <TEntity> Validate <TConditionalValue>( Expression <Func <TEntity, TConditionalValue> > memberExpression, Func <TEntity, bool> conditionalToCheck, Func <TEntity, TConditionalValue> calculateConditionalValue, Func <TEntity, TConditionalValue, bool> conditional, string errorMessage, bool format = true, EValidationKind validationKind = EValidationKind.Error) { lock (_syncValidations) { if (!(conditionalToCheck?.Invoke(Current) ?? true)) { return(this); } var conditionalValue = calculateConditionalValue(Current); if (!conditional(Current, conditionalValue)) { return(this); } var member = XHelper.Expressions.GetMemberName(memberExpression); var displayPropertyValue = TypeDescriptor.GetModelDisplayName(Current); Validations.Add(CreateValidation( validationKind, format ? string.Format(errorMessage, TypeDescriptor.GetPropertyDisplayName(member, false), conditionalValue, displayPropertyValue) : errorMessage)); return(this); } }
public EntityValidationHelper <TEntity> IfNoViolationsValidate( Expression <Func <TEntity, object> > memberExpression, Func <TEntity, bool> conditional, string errorMessage, bool format = true, EValidationKind validationKind = EValidationKind.Error) { lock (_syncValidations) { return(HasViolations ? this : Validate(memberExpression, conditional, errorMessage, format, validationKind)); } }
private ValidationResult CreateValidation(EValidationKind validationKind, string message) { switch (validationKind) { case EValidationKind.Error: return(new ValidationResult(message)); case EValidationKind.Warning: return(new WarningValidationResult(message)); default: throw new ArgumentOutOfRangeException(nameof(validationKind)); } }
public EntityValidationHelper <TEntity> Validate <TConditionalValue>( Expression <Func <TEntity, TConditionalValue> > memberExpression, Func <TEntity, TConditionalValue> calculateConditionalValue, Func <TEntity, TConditionalValue, bool> conditional, string errorMessage, bool format = true, EValidationKind validationKind = EValidationKind.Error) => Validate( memberExpression, null, calculateConditionalValue, conditional, errorMessage, format, validationKind);