Reflexión y .NET Native
En .NET Framework, el desarrollo administrado admite metaprogramación a través de la API de reflexión. La reflexión permite inspeccionar los objetos en una aplicación, llamar a métodos en objetos detectados a través de la inspección, generar nuevos tipos en tiempo de ejecución y es compatible con muchos otros escenarios de código dinámico. También admite la serialización y la deserialización, lo que permite que los valores de campo de un objeto se conserven y se restauren posteriormente. Estos escenarios requieren el compilador de .NET Framework Just-in-time (JIT) para generar código nativo basado en metadatos disponibles.
El entorno de ejecución de .NET Native no incluye un compilador JIT. Como resultado, todo el código nativo necesario debe haberse generado previamente. Se utiliza un conjunto de técnicas heurísticas para determinar qué código debe generarse, pero estas heurísticas no pueden cubrir todos los posibles escenarios de metaprogramación. Por tanto, debe proporcionar sugerencias para estos escenarios de metaprogramación mediante directivas de tiempo de ejecución. Si el código de metadatos o implementación necesario no está disponible en tiempo de ejecución, la aplicación inicia una excepción MissingMetadataException, MissingRuntimeArtifactException o MissingInteropDataException. Son dos los solucionadores de problemas disponibles que pueden generar la entrada adecuada para el archivo de directivas en tiempo de ejecución que elimina la excepción:
Solucionador de problemas de MissingMetadataException para los tipos.
Solucionador de problemas de MissingMetadataException para los métodos.
Nota:
Para obtener información general acerca del proceso de compilación de .NET Native que proporciona información general sobre por qué se necesita un archivo de directivas en tiempo de ejecución, consulte .NET Native y compilación.
Además, .NET Native no permite reflejar los miembros privados de la biblioteca de clases de .NET Framework. Por ejemplo, una llamada a la propiedad TypeInfo.DeclaredFields para recuperar los campos de un tipo de biblioteca de clases de .NET Framework devuelve solo campos públicos o protegidos.
En los artículos siguientes se proporciona la documentación conceptual y de referencia que necesita para admitir la reflexión y la serialización en las aplicaciones:
Consulte también
- Compiling Apps with .NET Native (Compilar aplicaciones con .NET Native)
- .NET Native y compilación