Jazyk

Reflexe v .NET Frameworku pro aplikace pro Windows Store

.NET Framework obsahuje sadu typů a členů pro reflexi určených k použití v aplikacích Windows Store pro Windows 8.x. Tyto typy a členy jsou k dispozici v plném .NET Frameworku a v .NET pro aplikace pro Windows Store. Tento článek vysvětluje hlavní rozdíly mezi těmito a jejich protějšky v .NET Framework 4 a starších verzích.

Pokud vytváříte aplikaci Windows Store pro Windows 8.x, musíte používat typy a členy reflexe v rozhraní .NET pro aplikace Windows Store pro Windows 8.x. Tyto typy a členy jsou také k dispozici, ale nevyžadují se pro použití v desktopových aplikacích, takže pro oba typy aplikací můžete použít stejný kód.

TypeInfo a načítání sestavení

V .NET pro aplikace Windows 8.x Store obsahuje třída TypeInfo některé funkce třídy Type v rozhraní .NET Framework 4. Objekt Type představuje odkaz na definici typu, zatímco TypeInfo objekt představuje samotnou definici typu. To vám umožní manipulovat s Type objekty, aniž by bylo nutné, aby modul runtime načetl sestavení, na které odkazují. Načtení spojeného TypeInfo objektu vyžaduje načtení sestavení.

TypeInfo obsahuje mnoho členů dostupných v Type a mnoho vlastností pro reflexi v .NET pro aplikace Windows 8.x Store vrací kolekce objektů TypeInfo. K získání objektu TypeInfo z objektu Type použijte metodu GetTypeInfo .

Metody dotazu

V .NET pro aplikace Windows 8.x Store použijete vlastnosti reflexe, které vrací IEnumerable<T> kolekce místo metod vracejících pole. Kontexty reflexe mohou implementovat líné procházení těchto kolekcí pro rozsáhlé sestavy nebo typy.

Vlastnosti reflexe vrací pouze deklarované metody u konkrétního objektu místo procházení stromu dědičnosti. Navíc nepoužívají BindingFlags parametry pro filtrování. Místo toho se filtrování provádí v uživatelském kódu pomocí dotazů LINQ na vrácených kolekcích. Pro objekty reflexe, které pocházejí z modulu runtime (například jako výsledek typeof(Object)), je nejlepší procházet strom dědičnosti pomocí metod třídy RuntimeReflectionExtensions. Uživatelé objektů z přizpůsobených kontextů reflexe nemohou tyto metody používat a musí sami procházet strom dědičnosti.

Omezení

V aplikaci pro Windows 8.x Store je přístup k některým typům a členům rozhraní .NET Framework omezený. Nemůžete například volat metody .NET Framework, které nejsou zahrnuty v .NET pro aplikace Windows 8.x Store pomocí objektuMethodInfo. Kromě toho jsou blokovány určité typy a členy, které nejsou v kontextu aplikace Windows 8.x Store považovány za bezpečné, stejně jako členy Marshal a WindowsRuntimeMarshal. Toto omezení má vliv pouze na typy a členy rozhraní .NET Framework; můžete volat svůj kód nebo kód třetí strany tak, jak to obvykle děláte.

Viz také