Share via


Reflection (Guida per programmatori C#)

Aggiornamento: novembre 2007

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 la classe Attributi (Guida per programmatori C#).

Di seguito viene riportato un esempio di reflection che utilizza il metodo statico GetType, ereditato da tutti i tipi dalla classe base Object, per ottenere il tipo di una variabile:

// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);

L'output è il seguente:

System.Int32

In questo esempio viene utilizzata la reflection per ottenere il nome completo di un assembly caricato:

// Using Reflection to get information from an Assembly:
System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
System.Console.WriteLine(o.GetName());

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 sulla reflection

La reflection può essere utile nelle seguenti situazioni:

Sezioni correlate

Ulteriori informazioni:

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le seguenti sezioni incluse in Specifiche del linguaggio C#:

  • 1.12 Attributi

  • 7.5.11 Operatore typeof

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Domini applicazione (Guida per programmatori C#)

Assembly e Global Assembly Cache (Guida per programmatori C#)