public static ValidateTarget <TValue?> IsInRange <TValue>([ValidatedNotNull] this ValidateTarget <TValue?> target, object minValue, object maxValue, Func <string> getErrorMessage = null, System.Collections.IComparer customComparer = null) where TValue : struct, IComparable { if (target.Value.HasValue) { System.Collections.IComparer comparer = customComparer ?? Comparer <TValue> .Default; if (comparer.Compare(target.Value.Value, minValue) < 0 || comparer.Compare(target.Value.Value, maxValue) > 0) { ExceptionFactory.ThrowException(target.Traits.OutOfRangeExceptionType, getErrorMessage != null ? getErrorMessage.Invoke() : ErrorMessageFactory.ShouldBeInRange(target, minValue, maxValue)); } } return(target); }
public static ValidateTarget <TValue> IsInRange <TValue>([ValidatedNotNull] this ValidateTarget <TValue> target, TValue minValue, TValue maxValue, Func <string> getErrorMessage = null, IComparer <TValue> customComparer = null) where TValue : IComparable <TValue> { IComparer <TValue> comparer = customComparer ?? Comparer <TValue> .Default; if (comparer.Compare(target.Value, minValue) < 0 || comparer.Compare(target.Value, maxValue) > 0) { ExceptionFactory.ThrowException(target.Traits.OutOfRangeExceptionType, getErrorMessage != null ? getErrorMessage.Invoke() : ErrorMessageFactory.ShouldBeInRange(target, minValue, maxValue)); } return(target); }
public static ValidateTarget <double?> IsInRange([ValidatedNotNull] this ValidateTarget <double?> target, double minValue, double maxValue, double allowedError, Func <string> getErrorMessage = null) { if (target.Value.HasValue) { var diffFromMin = Math.Abs(target.Value.Value - minValue); var diffFromMax = Math.Abs(target.Value.Value - maxValue); if ((diffFromMin > allowedError && target.Value.Value < minValue) || (diffFromMax > allowedError && target.Value.Value > maxValue)) { ExceptionFactory.ThrowException(target.Traits.OutOfRangeExceptionType, getErrorMessage != null ? getErrorMessage.Invoke() : ErrorMessageFactory.ShouldBeInRange(target, minValue, maxValue)); } } return(target); }