Помогите понять как работают атрибуты

Я не пойму как работают атрибуты. Например я хочу написать атрибут который делает главный поток Main из MTA в STA(я знаю что такой атрибут есть, это к примеру), как именно он связан с этим методом??? Атрибут который "накладывается" к этому методу то он получает как то данные об этом потоке и как то изменяет или как то по другому(возможно я написал глупость так как я понимаю как это работает)


Ответы (1 шт):

Автор решения: DerSkythe

В большинстве своём, атрибуты добавляют описание (метаданные) для метода, класса, сборки и т.п., к которому они применены. Можно сказать, что это флаг. Например, когда JSON сериализатор преобразует класс в JSON строку, он извлекает все свойства класса, но если у свойства в описании стоит атрибут [JsonIgnore], то данное свойство пропускается им.

Есть также атрибуты, которые добавляют участки кода. Например, атрибут [DllImport] добавляет код привязки к внешней библиотеки. А [MarshalAs] добавляет код преобразования типа. Кстати, на базе подобных атрибутов работают аспектно-ориентированные библиотеки.

Есть даже атрибуты условности [Conditional] которые работаю схожим с #if/#endif образом.

→ Ссылка