Is .Net attribute feature used at compile-time or run-time or both?

.net, attributes, c#

Solution

Attributes are output as metadata to the assembly at compile time. This meta data is then used at runtime via reflection - for example using `GetCustomAttributes()`.

Some attributes are used by the compiler at compile time, too. For example the compiler looks at the `AttributeUsageAttribute` to determine if an attribute can be used for a specific object.

Problem

In .Net, is the attribute feature used at compile-time or run-time or both? Can you give me some examples?

Original source