Reflection ermöglicht es einem Programm, zur Laufzeit Typen, Methoden und Eigenschaften zu inspizieren und zu manipulieren — auch solche, die zur Compile-Zeit unbekannt sind. Attribute hängen deklarativ Metadaten an Code an, die Tools und Frameworks lesen (oft über Reflection), um Verhalten zu steuern. Zusammen ermöglichen sie einen Großteil der .NET-Framework-"Magie" (Serialisierung, DI, ORMs, Validierung).
