ValidatorUtils
using System.Globalization;
namespace System.Configuration
{
internal static class ValidatorUtils
{
public static void HelperParamValidation(object value, Type allowedType)
{
if (value != null && value.GetType() != allowedType)
throw new ArgumentException(System.SR.Validator_value_type_invalid, string.Empty);
}
public static void ValidateScalar<T>(T value, T min, T max, T resolution, bool exclusiveRange) where T : IComparable<T>
{
ValidateRangeImpl(value, min, max, exclusiveRange);
ValidateResolution(resolution.ToString(), Convert.ToInt64(value, CultureInfo.InvariantCulture), Convert.ToInt64(resolution, CultureInfo.InvariantCulture));
}
private static void ValidateRangeImpl<T>(T value, T min, T max, bool exclusiveRange) where T : IComparable<T>
{
IComparable<T> comparable = (IComparable<T>)(object)value;
bool flag = comparable.CompareTo(min) >= 0;
if (flag && comparable.CompareTo(max) > 0)
flag = false;
if (flag ^ exclusiveRange)
return;
throw new ArgumentException(System.SR.Format(resourceFormat: (!min.Equals(max)) ? (exclusiveRange ? System.SR.Validation_scalar_range_violation_not_outside_range : System.SR.Validation_scalar_range_violation_not_in_range) : (exclusiveRange ? System.SR.Validation_scalar_range_violation_not_different : System.SR.Validation_scalar_range_violation_not_equal), provider: CultureInfo.InvariantCulture, p1: min.ToString(), p2: max.ToString()));
}
private static void ValidateResolution(string resolutionAsString, long value, long resolution)
{
if (value % resolution != 0)
throw new ArgumentException(System.SR.Format(System.SR.Validator_scalar_resolution_violation, resolutionAsString));
}
public static void ValidateScalar(TimeSpan value, TimeSpan min, TimeSpan max, long resolutionInSeconds, bool exclusiveRange)
{
ValidateRangeImpl(value, min, max, exclusiveRange);
if (resolutionInSeconds > 0)
ValidateResolution(TimeSpan.FromSeconds((double)resolutionInSeconds).ToString(), value.Ticks, resolutionInSeconds * 10000000);
}
}
}