Lingua

Reflection in .NET Framework per le app dello Store di Windows

.NET Framework comprende un insieme di tipi e membri di riflessione da utilizzare nelle app di Windows Store 8.x. Questi tipi e membri sono disponibili nel framework di .NET completo e in .NET per le app dello Store di Windows. Questo articolo illustra le principali differenze tra queste e le relative controparti in .NET Framework 4 e versioni precedenti.

Se stai creando un'app dello Store di Windows 8.x, devi usare i tipi e i membri della riflessione disponibili in .NET per le app dello Store di Windows 8.x. Questi tipi e membri sono disponibili, ma non necessari, per l'uso nelle app desktop, in modo da poter usare lo stesso codice per entrambi i tipi di app.

TypeInfo e caricamento degli assembly

In .NET per le app di Windows 8.x Store, la TypeInfo classe contiene alcune delle funzionalità della classe .NET Framework 4Type. Un Type oggetto rappresenta un riferimento a una definizione di tipo, mentre un TypeInfo oggetto rappresenta la definizione del tipo stessa. In questo modo è possibile modificare Type gli oggetti senza richiedere necessariamente al runtime di caricare l'assembly a cui fanno riferimento. Il recupero dell'oggetto associato TypeInfo forza il caricamento dell'assembly.

TypeInfo contiene molti dei membri disponibili in Type, e molte delle proprietà di reflection in .NET per le app di Windows Store 8.x restituiscono raccolte di oggetti TypeInfo. Per ottenere un TypeInfo oggetto da un Type oggetto , utilizzare il GetTypeInfo metodo .

Metodi di query

In .NET per le app di Windows 8.x Store, si usano le proprietà di riflessione che restituiscono raccolte IEnumerable<T> anziché metodi che restituiscono array. I contesti di riflessione possono implementare l'attraversamento pigro di queste raccolte per assembly o tipi di grandi dimensioni.

Le proprietà di riflessione restituiscono solo i metodi dichiarati in un particolare oggetto invece di esaminare l'albero di ereditarietà. Inoltre, non usano BindingFlags parametri per filtrare. Il filtro viene invece eseguito nel codice utente usando query LINQ sulle raccolte restituite. Per gli oggetti reflection che hanno origine con il runtime (ad esempio, come risultato di typeof(Object)), l'attraversamento dell'albero di ereditarietà viene ottenuto al meglio usando i metodi helper della classe RuntimeReflectionExtensions. I consumatori di oggetti da contesti di riflessione personalizzati non possono usare questi metodi e devono percorrere l'albero di ereditarietà autonomamente.

Restrizioni

In un'app di Windows 8.x Store, l'accesso ad alcuni tipi e membri di .NET Framework è limitato. Ad esempio, non è possibile chiamare metodi .NET Framework non inclusi in .NET per le app Windows 8.x Store usando un MethodInfo oggetto . Inoltre, alcuni tipi e membri che non sono considerati sicuri nel contesto di un'app di Windows Store 8.x vengono bloccati, così come i membri Marshal e WindowsRuntimeMarshal. Questa restrizione influisce solo sui tipi e sui membri di .NET Framework; è possibile chiamare il proprio codice o quello di terze parti normalmente.

Vedere anche