Хотя код для создания пользовательского атрибута довольно прост, очень важно, чтобы вы понимали, что такое атрибуты:
Атрибуты - это метаданные, скомпилированные в вашу программу. Сами атрибуты не добавляют никакой функциональности к классу, свойству или модулю, только данные. Однако, используя отражение, можно использовать эти атрибуты для создания функциональности.
Так, например, давайте посмотрим на Блок приложения проверки , из Корпоративная библиотека . Если вы посмотрите на пример кода, вы увидите:
/// <summary>
/// blah blah code.
/// </summary>
[DataMember]
[StringLengthValidator(8, RangeBoundaryType.Inclusive, 8, RangeBoundaryType.Inclusive, MessageTemplate = "\"{1}\" must always have \"{4}\" characters.")]
public string Code { get; set; }
Из приведенного выше фрагмента можно догадаться, что Код всегда будет проверяться при каждом изменении в соответствии с правилами Валидатора (в данном примере они содержат не менее 8 символов и не более 8 символов). Но правда в том, что Атрибут ничего не делает, только добавляет метаданные к свойству.
Однако в Enterprise Library есть метод Validation.Validate
, который будет проверять ваш объект, и для каждого свойства он будет проверять, нарушает ли содержимое правило, сообщаемое атрибутом.
Итак, вот как вы должны думать об атрибутах - способ добавить данные в ваш код, которые впоследствии могут быть использованы другими методами / классами / и т. Д.