Reflektion und .NET Native
In .NET Framework unterstützt die verwaltete Entwicklung Metaprogrammierung über die Spiegelungs-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-Laufzeit 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:
Die MissingMetadataException-Problembehandlung für Typen.
Die MissingMetadataException-Problembehandlung für Methoden.
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 lässt .NET Native nicht zu, dass Sie über private Member der .NET Framework-Klassenbibliothek nachdenken. 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 zur Unterstützung der Reflexion und Serialisierung in Ihren Apps benötigen: