Как вы знаете, атрибуты в .NET - это просто метаданные, которые вставляются в сборку во время компиляции.Если нет ничего, что будет их интерпретировать, то ничего не произойдет.
Так, например, в случае ASP.NET MVC есть валидатор, который интерпретирует эти атрибуты, например:
class AttributePlayground
{
[StringLength(5)]
public String StringLengthTest { get; set; }
[Range(10, 20)]
public int Age { get; set; }
}
class Program
{
static void Main()
{
var attributePlayground = new AttributePlayground();
attributePlayground.StringLengthTest = "Too long!";
attributePlayground.Age = 34;
var context = new ValidationContext(attributePlayground, null, null);
var errors = new List<ValidationResult>();
if (!Validator.TryValidateObject(attributePlayground, context, errors, true))
{
foreach (var error in errors)
{
Console.WriteLine(error.ErrorMessage);
}
}
}
}
Но, честно говоря, если вы собираетесь провести более серьезную и сложную проверкуЯ бы порекомендовал вам не использовать декларативную логику проверки, которой являются аннотации данных.Я бы порекомендовал вам FluentValidation.NET .Это позволяет вам выразить намного более сложные правила проверки в хорошем виде, чего в противном случае было бы очень трудно достичь с помощью аннотаций данных.