<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0-preview.3.21201.4" />

ValidatorUtils

static class 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); } } }