Reflektion und .NET Native

In .NET Framework unterstützt die verwaltete Entwicklung die Metaprogrammierung über die Reflektions-API. Durch Reflektion können Sie Objekte in einer App überprüfen, Methoden für bei der Überprüfung ermittelte Objekte aufrufen und neue Typen zur Laufzeit generieren. Außerdem werden viele weitere Szenarien mit dynamischem Code unterstützt. Zudem werden die Serialisierung und Deserialisierung unterstützt, wodurch die Feldwerte eines Objekts beibehalten und später wiederhergestellt werden können. All diese Szenarien erfordern den .NET Framework Just-In-Time-Compiler (JIT) zur Generierung von nativem Code basierend auf verfügbaren Metadaten.

Die .NET Native Runtime enthält keinen JIT-Compiler. Daher muss sämtlicher notwendiger systemeigener Code vorab generiert werden. Eine Reihe von Heuristiken wird verwendet, um zu bestimmen, welcher Code generiert werden soll, aber diese Heuristiken können nicht alle möglichen Metaprogrammierungsszenarien abdecken. Daher müssen Sie mit Laufzeitanweisungen Hinweise für diese Metaprogrammierungsszenarios bereitstellen. Wenn die erforderlichen Metadaten oder der Implementierungscode nicht zur Laufzeit verfügbar sind, wird durch die App MissingMetadataException, MissingRuntimeArtifactException oderMissingInteropDataException ausgelöst. Es sind zwei Problembehandlungen verfügbar, die den entsprechenden Eintrag für die Laufzeitdirektivendatei zur Beseitigung der Ausnahme generieren:

Hinweis

Eine Übersicht über den .NET Native-Kompilierungsprozess mit Hintergrundinformationen, die verdeutlichen, warum eine Laufzeitdirektivendatei erforderlich ist, finden Sie unter .NET Native und Kompilierung.

Darüber hinaus können Sie .NET Native nicht über private Member der .NET Framework Klassenbibliothek reflektieren. Beispielsweise gibt ein Aufruf der TypeInfo.DeclaredFields-Eigenschaft zum Abrufen der Felder einer .NET Framework-Klassenbibliothek nur öffentliche oder geschützte Felder zurück.

Die folgenden Artikel enthalten die konzeptionelle Und Referenzdokumentation, die Sie benötigen, um die Reflexion und Serialisierung in Ihren Apps zu unterstützen:

Siehe auch