Reflection permite que um programa inspecione e manipule tipos, métodos e propriedades em tempo de execução — inclusive aqueles desconhecidos em tempo de compilação. Attributes anexam metadados declarativos ao código, que ferramentas e frameworks leem (muitas vezes via reflection) para conduzir o comportamento. Juntos, eles dão suporte a grande parte da "mágica" dos frameworks do .NET (serialização, DI, ORMs, validação).
