Reflection ایک پروگرام کو runtime پر types، methods، اور properties کو inspect اور manipulate کرنے کی اجازت دیتا ہے — یہاں تک کہ وہ بھی جو compile time پر معلوم نہ ہوں۔ Attributes code کو declarative metadata سے منسلک کرتے ہیں جو tools اور frameworks پڑھتے ہیں (اکثر reflection کے ذریعے) تاکہ behavior کو چلایا جا سکے۔ یہ دونوں مل کر .NET کے framework "magic" کے بڑے حصے کو طاقت دیتے ہیں (serialization، DI، ORMs، validation)۔
