Språk

Reflektion i .NET Framework för Windows Store-appar

.NET Framework innehåller en uppsättning reflektionstyper och medlemmar för användning i Windows 8.x Store-appar. Dessa typer och medlemmar är tillgängliga i hela .NET Framework och i .NET för Windows Store-appar. Den här artikeln förklarar de stora skillnaderna mellan dessa och deras motsvarigheter i .NET Framework 4 och tidigare versioner.

Om du skapar en Windows 8.x Store-app måste du använda reflektionstyperna och medlemmarna i .NET för Windows 8.x Store-appar. Dessa typer och medlemmar är också tillgängliga, men krävs inte, för användning i skrivbordsappar, så du kan använda samma kod för båda typerna av appar.

TypeInfo och sammansättningsinläsning

I .NET för Windows 8.x Store-appar innehåller klassen TypeInfo en del av funktionaliteten i klassen .NET Framework 4 Type. Ett Type objekt representerar en referens till en typdefinition, medan ett TypeInfo objekt representerar själva typdefinitionen. På så sätt kan du manipulera Type objekt utan att det kräver att körningen läser in den assembly som de refererar till. Att hämta det associerade TypeInfo objektet tvingar assemblyn att läsas in.

TypeInfoinnehåller många av de medlemmar som är tillgängliga på Type, och många av reflektionsegenskaperna i .NET för Windows 8.x Store-appar returnerar samlingar av TypeInfo objekt. Om du vill hämta ett TypeInfo objekt från ett Type objekt använder du GetTypeInfo -metoden.

Frågemetoder

I .NET för Windows 8.x Store-appar använder du de reflektionsegenskaper som returnerar IEnumerable<T> samlingar i stället för metoder som returnerar matriser. Reflektionskontexter kan implementera lat bläddering av dessa samlingar för stora sammansättningar eller typer.

Reflektionsegenskaperna returnerar endast de deklarerade metoderna för ett visst objekt i stället för att gå igenom arvsträdet. Dessutom använder de inte BindingFlags parametrar för filtrering. I stället sker filtrering i användarkod med hjälp av LINQ-frågor i de returnerade samlingarna. För reflektionsobjekt som har sitt ursprung i körtiden (till exempel som ett resultat av typeof(Object)) är det bäst att navigera i arvsträdet med hjälp av hjälpmetoderna i RuntimeReflectionExtensions-klassen. Användare av objekt från anpassade reflektionskontexter kan inte använda dessa metoder och måste själva passera arvsträdet.

Begränsningar

I en Windows 8.x Store-app är åtkomsten till vissa .NET Framework-typer och medlemmar begränsad. Du kan till exempel inte anropa .NET Framework-metoder som inte ingår i .NET för Windows 8.x Store-appar med hjälp av ett MethodInfo -objekt. Dessutom blockeras vissa typer och medlemmar som inte anses vara säkra inom ramen för en Windows 8.x Store-app, liksom Marshal medlemmarWindowsRuntimeMarshal. Den här begränsningen påverkar endast .NET Framework-typer och -medlemmar. du kan anropa din kod eller kod från tredje part som vanligt.

Se även