Un compilador de un lenguaje .Net generará los metadatos y los almacenará en el ensamblado que contiene el CIL.
Esto asegura que sólo se pueda invocar el método con el número y tipo de parámetros correctos.
El desarrollador tiene que proporcionar el código necesario para poder leer los metadatos y actuar sobre ellos.
Los ensamblados contienen tablas de metadatos, que están descritas por la especificación CIL.
Cada tabla contiene varias entradas (o ninguna) cuyas posiciones determinan sus índices.
Sin embargo, no permite acceso a métodos al CIL en tiempo de ejecución.
Al margen del espacio de nombres System.Reflection, existen otras herramientas disponibles para manejar metadatos.