Attributes offer the ability to add structured, machine-readable metadata
information on declarations in code: Classes, methods, functions,
parameters, properties and class constants can be the target of an attribute.
The metadata defined by attributes can then be inspected at runtime using the
Reflection APIs.
Attributes could therefore be thought of as a configuration language
embedded directly into code.