Sprache

Reflektion im .NET Framework für Windows Store-Apps

.NET Framework enthält eine Reihe von Spiegelungstypen und Membern für die Verwendung in Windows 8.x Store-Apps. Diese Typen und Member sind im vollständigen .NET Framework und in .NET für Windows Store-Apps verfügbar. In diesem Artikel werden die wichtigsten Unterschiede zwischen diesen und ihren Gegenstücken in .NET Framework 4 und früheren Versionen erläutert.

Wenn Sie eine Windows 8.x Store-App erstellen, müssen Sie die Reflexionstypen und -member in .NET für Windows 8.x Store-Apps verwenden. Diese Typen und Member sind ebenfalls für die Verwendung in Desktop-Apps verfügbar, jedoch nicht erforderlich, sodass Sie denselben Code für beide Typen von Apps verwenden können.

TypeInfo und Laden von Assemblys

In .NET für Windows 8.x Store-Apps enthält die TypeInfo Klasse einige der Funktionen der .NET Framework 4-KlasseType. Ein Type Objekt stellt einen Verweis auf eine Typdefinition dar, während ein TypeInfo Objekt die Typdefinition selbst darstellt. Auf diese Weise können Sie Type Objekte bearbeiten, ohne dass die Laufzeit die Assembly, auf die verwiesen wird, laden muss. Das Abrufen des zugeordneten TypeInfo-Objekts erzwingt das Laden der Assembly.

TypeInfo enthält viele der Elemente, die auf Type verfügbar sind, und viele der Reflexionseigenschaften in .NET für Windows 8.x Store-Apps geben Sammlungen von TypeInfo-Objekten zurück. Verwenden Sie die TypeInfo Methode, um ein Type Objekt aus einem GetTypeInfo Objekt abzurufen.

Abfragemethoden

In .NET für Windows 8.x Store-Apps verwenden Sie die Reflexionseigenschaften, die IEnumerable<T>Sammlungen anstelle von Methoden zurückgeben, die Arrays zurückgeben. Reflektionskontexte können einen verzögerten Durchlauf dieser Auflistungen für große Assemblys oder Typen implementieren.

Die Spiegelungseigenschaften geben nur die deklarierten Methoden für ein bestimmtes Objekt zurück, anstatt die Vererbungsstruktur zu durchlaufen. Darüber hinaus verwenden sie keine BindingFlags Parameter zum Filtern. Stattdessen erfolgt die Filterung im Benutzercode mithilfe von LINQ-Abfragen für die zurückgegebenen Auflistungen. Für Reflektionsobjekte, die mit der Laufzeit ausgelöst werden (z. B. als Ergebnis von typeof(Object)), wird das Durchlaufen der Vererbungsstruktur am besten erreicht, indem die Hilfsmethoden der RuntimeReflectionExtensions-Klasse verwendet werden. Nutzer von Objekten aus angepassten Reflexionskontexten können diese Methoden nicht verwenden und müssen den Vererbungsbaum selbst durchlaufen.

Einschränkungen

In einer Windows 8.x Store-App ist der Zugriff auf einige .NET Framework-Typen und -Member eingeschränkt. Sie können z. B. keine .NET Framework-Methoden aufrufen, die nicht in .NET für Windows 8.x Store-Apps enthalten sind, indem Sie ein MethodInfo Objekt verwenden. Darüber hinaus werden bestimmte Typen und Member, die im Kontext einer Windows 8.x Store-App nicht als sicher gelten, blockiert, ebenso wie WindowsRuntimeMarshal- und Marshal-Member. Diese Einschränkung betrifft nur .NET Framework-Typen und -Member; Sie können Ihren Code oder Drittanbietercode wie gewohnt aufrufen.

Siehe auch