A reflection lehetővé teszi egy programnak, hogy futásidőben vizsgálja és kezelhesse a típusokat, metódusokat és tulajdonságokat — még olyan ismeretleneket is, amelyek fordítási időben nem voltak ismertek. Az attributes deklaratív metaadatokat csatolnak a kódhoz, amelyeket eszközök és keretrendszerek olvasnak (gyakran reflection-en keresztül) a viselkedés vezérléséhez. Együtt a .NET keretrendszer nagyrészének "varázslata" mögött húzódnak (szerializáció, DI, ORM-ek, validáció).;
