La riflessione permette a un programma di ispezionare e manipolare tipi, metodi e proprietà a runtime — anche quelli sconosciuti al momento della compilazione. Gli attributi allegano metadati dichiarativi al codice che strumenti e framework leggono (spesso tramite riflessione) per guidare il comportamento. Insieme alimentano gran parte della "magia" del framework .NET (serializzazione, DI, ORM, validazione).
