Помогите понять как работают атрибуты
Я не пойму как работают атрибуты. Например я хочу написать атрибут который делает главный поток Main из MTA в STA(я знаю что такой атрибут есть, это к примеру), как именно он связан с этим методом??? Атрибут который "накладывается" к этому методу то он получает как то данные об этом потоке и как то изменяет или как то по другому(возможно я написал глупость так как я понимаю как это работает)
Ответы (1 шт):
В большинстве своём, атрибуты добавляют описание (метаданные) для метода, класса, сборки и т.п., к которому они применены. Можно сказать, что это флаг.
Например, когда JSON сериализатор преобразует класс в JSON строку, он извлекает все свойства класса, но если у свойства в описании стоит атрибут [JsonIgnore]
, то данное свойство пропускается им.
Есть также атрибуты, которые добавляют участки кода. Например, атрибут [DllImport]
добавляет код привязки к внешней библиотеки. А [MarshalAs]
добавляет код преобразования типа.
Кстати, на базе подобных атрибутов работают аспектно-ориентированные библиотеки.
Есть даже атрибуты условности [Conditional]
которые работаю схожим с #if/#endif
образом.