Condividi tramite


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:

Sezioni correlate

Per ulteriori informazioni:

Vedere anche

Concetti

Guida per programmatori C#

Altre risorse

Guida per programmatori Visual Basic

Domini delle applicazioni (C# e Visual Basic)

Assembly in Common Language Runtime