using System.Text.RegularExpressions; namespace ArgumentsToolkit; public partial class RangeAttribute { /// /// Атрибут для проверки строкового значения по регулярному выражению. /// [AttributeUsage(AttributeTargets.Property)] public class RegexAttribute : ValidationAttribute { /// /// Шаблон регулярного выражения. /// public string Pattern { get; } /// /// Создаёт новый атрибут регулярного выражения. /// /// Регулярное выражение для проверки. public RegexAttribute(string pattern) { Pattern = pattern; } public override string ErrorTemplate { get; set; } = "--{0}: значение {1} не соответствует регулярному выражению '{2}'"; public override bool Validate(object? value) { if (value is string s) return Regex.IsMatch(s, Pattern); return true; } public override string GetErrorMessage(string optionName, object? value) { return string.Format(ErrorTemplate, optionName, value, Pattern); } } }