Język

Refleksja w środowisku .NET Framework dla aplikacji Sklepu Windows

.NET Framework zawiera zestaw typów refleksji i składowych przeznaczonych do użycia w aplikacjach Windows 8.x Store. Te typy i składowe są dostępne w pełnym środowisku .NET Framework oraz w platformie .NET dla aplikacji Windows Store. W tym artykule wyjaśniono główne różnice między tymi i ich odpowiednikami w programie .NET Framework 4 i wcześniejszych wersjach.

Jeśli tworzysz aplikację Windows 8.x Store, musisz użyć typów odbicia i elementów członkowskich w .NET dla aplikacji Windows 8.x Store. Te typy i elementy członkowskie są również dostępne, ale nie są wymagane do użycia w aplikacjach komputerowych, dzięki czemu można użyć tego samego kodu w obu typach aplikacji.

TypeInfo i ładowanie zestawu

W platformie .NET dla aplikacji Sklepu Windows 8.x klasa TypeInfo zawiera część funkcjonalności klasy Type platformy .NET Framework 4. Type Obiekt reprezentuje odwołanie do definicji typu, natomiast TypeInfo obiekt reprezentuje samą definicję typu. Dzięki temu można manipulować Type obiektami bez konieczności wymagania, aby środowisko uruchomieniowe załadowało zestaw, do którego się odwołuje. Pobranie skojarzonego TypeInfo obiektu powoduje załadowanie zestawu.

TypeInfo zawiera wiele składników dostępnych w elemencie Type, a wiele właściwości refleksji w środowisku .NET dla aplikacji Sklepu Windows 8.x zwraca kolekcje obiektów TypeInfo. Aby uzyskać TypeInfo obiekt z Type obiektu, użyj GetTypeInfo metody .

Metody zapytań

W platformie .NET w aplikacjach Sklepu dla systemu Windows 8.x należy używać właściwości refleksji, które zwracają kolekcje IEnumerable<T>, zamiast metod zwracających tablice. Konteksty refleksji mogą implementować leniwe przechodzenie przez te kolekcje w przypadku obszernych zestawów lub typów.

Właściwości odbicia zwracają tylko zadeklarowane metody dla określonego obiektu zamiast przechodzić przez drzewo dziedziczenia. Ponadto nie używają BindingFlags parametrów do filtrowania. Zamiast tego filtrowanie odbywa się w kodzie użytkownika przy użyciu zapytań LINQ w zwracanych kolekcjach. W przypadku obiektów refleksji, które pochodzą ze środowiska uruchomieniowego (na przykład w wyniku typeof(Object)), najlepiej przechodzić przez drzewo dziedziczenia przy użyciu metod pomocniczych klasy RuntimeReflectionExtensions. Użytkownicy obiektów z dostosowanych kontekstów refleksji nie mogą używać tych metod i muszą samodzielnie przejść przez drzewo dziedziczenia.

Ograniczenia

W aplikacji ze Sklepu Windows 8.x dostęp do niektórych typów i członków programu .NET Framework jest ograniczony. Na przykład nie można wywołać metod .NET Framework, które nie są uwzględnione w .NET dla aplikacji Windows 8.x Store przy użyciu MethodInfo obiektu. Ponadto blokowane są niektóre typy i składowe, które nie są uznawane za bezpieczne w kontekście aplikacji Windows 8.x Store, podobnie jak składowe Marshal i WindowsRuntimeMarshal. To ograniczenie dotyczy tylko typów i członków programu .NET Framework; możesz wywołać kod lub kod innej firmy, tak jak zwykle.

Zobacz także