Ответ 1
Это атрибуты, они могут применяться к элементам вашей базы кода и при этом применяют метаданные к этой вещи - как описательные декларации. Эти вещи могут иметь несколько атрибутов. Существует множество "встроенных" атрибутов, предоставляемых платформой .NET, однако вы можете определить свои собственные.
Типы, которые являются атрибутами, фактически определяются с полным именем SuchAThingAttribute
, тогда как при применении вам нужно указать только имя минус Attribute
, которое становится SuchAThing
. И они должны быть получены из System.Attribute
(по крайней мере, чтобы быть совместимыми).
Атрибут может иметь "настройки", то есть вы можете указать (при написании собственных), какие типы элементов, к которым применим атрибут, и может ли элемент иметь более одного типа этого атрибута или нет, и т.д.
Теперь метаданные атрибута могут быть получены при использовании методов Reflection и GetCustomAttribute
. Ссылки здесь и здесь показывают примеры этого.