namespace ArgumentsToolkit; /// /// Атрибут для проверки числового значения на соответствие диапазону. /// Применяется к свойствам модели Options. /// [AttributeUsage(AttributeTargets.Property)] public partial class RangeAttribute : ValidationAttribute { /// /// Минимально допустимое значение. /// public double Min { get; } /// /// Максимально допустимое значение. /// public double Max { get; } /// /// Создаёт новый атрибут диапазона. /// /// Минимальное значение. /// Максимальное значение. public RangeAttribute(double min, double max) { Min = min; Max = max; } public override string ErrorTemplate { get; set; } = "--{0}: значение {1} выходит за диапазон {2}..{3}"; public override bool Validate(object? value) { if (value is IConvertible c) { var d = c.ToDouble(System.Globalization.CultureInfo.InvariantCulture); if (d < Min || d > Max) return false; } return true; } public override string GetErrorMessage(string optionName, object? value) { return string.Format(ErrorTemplate, optionName, value, Min, Max); } }