Найти в Дзене
.Net Review

Атрибуты в C#. Зачем нужны, как работают? Часть 1

Оглавление

Наверное многие видели какой-то код в квадратных скобках перед свойством или классом. Это называется атрибуты. Подробнее о том, зачем они нужны и когда их применять в этой статье.

Атрибут - что это?

Атрибуты предоставляют мощный метод связывания метаданных или декларативной информации с кодом (сборки, типы, методы, свойства и т. д.). После того как атрибут связан с программной сущностью, его можно запросить во время выполнения с помощью рефлексии. Если представлять атрибут физически, то это класс, наследуемый от System.Attribute, который при его указании в качестве атрибута: [Attribute] можно получить после инициализации класса.

Атрибуты имеют следующие свойства:

  • Атрибуты добавляют метаданные в вашу программу. Метаданные-это информация о типах, определенных в программе. Все сборки .NET содержат указанный набор метаданных, описывающих типы и члены типов, определенные в сборке. Вы можете добавить пользовательские атрибуты, чтобы указать любую дополнительную информацию, которая требуется.
  • Можно применить один или несколько атрибутов ко всем сборкам, модулям или меньшим элементам программы, таким как классы и свойства.
  • Атрибуты могут принимать аргументы так же, как методы и свойства.
  • Ваша программа может проверить свои собственные метаданные или метаданные в других программах с помощью отражения.

Зачем они нужны?

Благодаря атрибутам можно реализовать валидацию, указать на определенные свойства, классы и т.д. Самый очевидный пример - указание свойств для сериализации.

Пример инициализации атрибута

Для инициализации необходимо написать класс, который наследуется от System.Attribute. Для того, чтобы в атрибут передать данные достаточно сделать конструктор, в котором будет поле с необходимым типом.

-2

Для применения атрибута достаточно написать его в квадратных скобочках над свойством/классом/т.д.

-3

В следующей статье подробнее о реализации логики для атрибутов и их ограничениях.

Телеграмм канал: https://t.me/dotnetreview

Источники: Microsoft Doc C# Attributes
Наука
7 млн интересуются