File: System\Configuration\TimeSpanValidatorAttribute.cs
Web Access
Project: src\runtime\src\libraries\System.Configuration.ConfigurationManager\src\System.Configuration.ConfigurationManager.csproj (System.Configuration.ConfigurationManager)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Globalization;

namespace System.Configuration
{
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class TimeSpanValidatorAttribute : ConfigurationValidatorAttribute
    {
        public const string TimeSpanMinValue = "-10675199.02:48:05.4775808";
        public const string TimeSpanMaxValue = "10675199.02:48:05.4775807";

        public override ConfigurationValidatorBase ValidatorInstance
            => new TimeSpanValidator(MinValue, MaxValue, ExcludeRange);

        public TimeSpan MinValue { get; private set; } = TimeSpan.MinValue;

        public TimeSpan MaxValue { get; private set; } = TimeSpan.MaxValue;

        public string MinValueString
        {
            get { return MinValue.ToString(); }
            set
            {
                TimeSpan timeValue = TimeSpan.Parse(value, CultureInfo.InvariantCulture);

                if (MaxValue < timeValue)
                    throw new ArgumentOutOfRangeException(nameof(value), SR.Validator_min_greater_than_max);

                MinValue = timeValue;
            }
        }

        public string MaxValueString
        {
            get { return MaxValue.ToString(); }
            set
            {
                TimeSpan timeValue = TimeSpan.Parse(value, CultureInfo.InvariantCulture);

                if (MinValue > timeValue)
                    throw new ArgumentOutOfRangeException(nameof(value), SR.Validator_min_greater_than_max);

                MaxValue = timeValue;
            }
        }

        public bool ExcludeRange { get; set; }
    }
}