Reflection stelt een programma in staat om types, methoden en properties tijdens runtime te inspecteren en te manipuleren — zelfs degene die tijdens het compileren onbekend zijn. Attributes voegen declaratieve metagegevens toe aan code die tools en frameworks lezen (vaak via reflection) om gedrag aan te sturen. Samen vormen zij de basis voor veel van .NET's framework "magie" (serialisatie, DI, ORM's, validatie).
