Reflection (C# e Visual Basic)
La reflection fornisce oggetti (di tipo Type) che descrivono assembly, moduli e tipi. È possibile utilizzare la reflection per creare in modo dinamico un'istanza di un tipo, associare il tipo a un oggetto esistente o ottenere il tipo da un oggetto esistente, nonché richiamarne i metodi o accedere ai campi e alle proprietà dell'oggetto. La reflection consente inoltre di accedere agli eventuali attributi utilizzati nel codice. Per ulteriori informazioni, vedere Estensione di metadati mediante attributi.
Di seguito viene riportato un esempio di reflection che utilizza il metodo statico GetType, ereditato da tutti i tipi dalla classe di base Object, per ottenere il tipo di una variabile:
' Using GetType to obtain type information:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
L'output è il seguente:
System.Int32
Nell'esempio seguente viene utilizzata la reflection per ottenere il nome completo dell'assembly caricato.
' Using Reflection to get information from an Assembly:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
L'output è il seguente:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Nota
Le parole chiave di C# protected e internal non hanno significato in IL e non sono utilizzate dalle API Reflection.I termini corrispondenti in IL sono Family e Assembly.Per identificare un metodo internal tramite reflection, utilizzare la proprietà IsAssembly.Per identificare un metodo protected internal, utilizzare la proprietà IsFamilyOrAssembly.
Cenni preliminari su reflection
La reflection può essere utile nelle seguenti situazioni:
Quando è necessario accedere agli attributi nei metadati di un programma. Per ulteriori informazioni, vedere Recupero di informazioni memorizzate negli attributi.
Per esaminare e creare istanze di tipi in un assembly.
Per compilare nuovi tipi in fase di esecuzione. Utilizzare le classi in System.Reflection.Emit.
Per eseguire associazioni tardive, accedere a metodi su tipi creati in fase di esecuzione. Vedere l'argomento Caricamento e utilizzo dinamico dei tipi.
Sezioni correlate
Per ulteriori informazioni:
Vedere anche
Concetti
Altre risorse
Guida per programmatori Visual Basic