Réflexion et .NET NativeReflection and .NET Native

Dans le .NET Framework, le développement managé prend en charge la métaprogrammation par le biais de l'API de réflexion.In the .NET Framework, managed development supports metaprogramming through the reflection API. 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,Reflection allows you to inspect objects in an app, call methods on objects discovered through inspection, generate new types at run time, and supports many other dynamic code scenarios. 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.It also supports serialization and deserialization, which allows an object's field values to be persisted and later restored. 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.These scenarios all require the .NET Framework just-in-time (JIT) compiler to generate native code based on available metadata.

Le runtime .NET Native n’inclut pas un compilateur JIT.The .NET Native runtime doesn't include a JIT compiler. Tout le code natif nécessaire doit donc être généré à l'avance.As a result, all necessary native code must be generated in advance. 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.A set of heuristics is used to determine what code should be generated, but these heuristics cannot cover all possible metaprogramming scenarios. Vous devez donc fournir des indications pour ces scénarios de métaprogrammation à l’aide de directives runtime.Therefore, you must provide hints for these metaprogramming scenarios by using runtime directives. 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.If the necessary metadata or implementation code is not available at runtime, your app throws a MissingMetadataException, MissingRuntimeArtifactException, or MissingInteropDataException exception. 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 :Two troubleshooters are available that will generate the appropriate entry for your runtime directives file that eliminates the 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.For an overview of the .NET Native compilation process that provides background on why a runtime directives file is needed, see .NET Native and Compilation.

En outre, .NET Native ne vous autorise à réfléchir aux membres privés de la bibliothèque de classes .NET Framework.In addition, .NET Native doesn't allow you to reflect over private members of the .NET Framework class library. 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.For example, a call to the TypeInfo.DeclaredFields property to retrieve the fields of a .NET Framework class library type returns only public or protected fields.

Les rubriques suivantes fournissent la documentation conceptuelle et de référence qui vous permet de prendre en charge la réflexion et la sérialisation dans vos applications :The following topics provide the conceptual and reference documentation that you need to support reflection and serialization in your apps:

Voir aussiSee also