La réflexion permet à un programme d'inspecter et de manipuler les types, les méthodes et les propriétés à l'exécution — même ceux inconnus à la compilation. Les attributs attachent des métadonnées déclaratives au code que les outils et frameworks lisent (souvent via la réflexion) pour piloter le comportement. Ensemble, ils alimentent une grande partie de la « magie » du framework .NET (sérialisation, injection de dépendances, ORMs, validation).
