Réflexion et .NET Native

Dans .NET Framework, le développement managé prend en charge la métaprogrammation via l’API de réflexion. La réflexion vous permet d'inspecter les objets dans une application, d'appeler des méthodes sur les objets découverts au cours de l'inspection et de générer de nouveaux types au moment de l'exécution. Elle prend également en charge de nombreux autres scénarios de code dynamique, comme la sérialisation et la désérialisation, qui permettent de rendre persistantes les valeurs de champ d’un objet et de les restaurer ultérieurement. Ces scénarios nécessitent tous le compilateur juste-à-temps (JIT) du .NET Framework pour générer du code natif basé sur les métadonnées disponibles.

Le runtime .NET Native n’inclut pas de compilateur JIT. Tout le code natif nécessaire doit donc être généré à l'avance. Un ensemble d'heuristiques permet de déterminer le code à générer, mais ces heuristiques ne peuvent pas couvrir tous les scénarios de métaprogrammation possibles. Vous devez donc fournir des indications pour ces scénarios de métaprogrammation à l’aide de directives runtime. Si les métadonnées ou le code d’implémentation nécessaires ne sont pas disponibles lors de l’exécution, votre application lève une exception MissingMetadataException, MissingRuntimeArtifactException ou MissingInteropDataException. Deux utilitaires de résolution des problèmes sont disponibles, qui vont génèrer l'entrée appropriée pour votre fichier de directives de runtime qui élimine l'exception :

Notes

Pour une vue d'ensemble du processus de compilation .NET Native apportant des informations générales sur la nécessité d'un fichier de directives de runtime, voir .NET Native et compilation.

En outre, .NET Native ne vous permet pas de réfléchir sur les membres privés de la bibliothèque de classes .NET Framework. Par exemple, un appel de la propriété TypeInfo.DeclaredFields pour récupérer les champs d'un type de bibliothèque de classes du .NET Framework retourne uniquement des champs publics ou protégés.

Les articles suivants fournissent la documentation conceptuelle et de référence dont vous avez besoin pour prendre en charge la réflexion et la sérialisation dans vos applications :

Voir aussi