Capire la reflection in C#
Usi la reflection per esaminare e manipolare oggetti durante l’esecuzione
Capire la reflection in C# è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 5 di 5. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 5 lezioni in totale.
Introduzione alla reflection
Comprendere la reflection in C#
Benvenuto alla lezione successiva! In questa lezione imparerà a conoscere la reflection in C#, una potente funzionalità che consente di esaminare e utilizzare tipi e oggetti a runtime. Iniziamo!

Che cos'è la reflection?
La reflection è la capacità di un programma di esaminare e manipolare la propria struttura a runtime. Viene comunemente utilizzata per:
- Accedere ai metadati relativi a tipi, metodi e proprietà.
- Invocare dinamicamente i metodi e accedere ai campi.
- Creare framework e strumenti come serializzatori e ORM.
Punto chiave: la reflection fa parte dello spazio dei nomi System.Reflection.
Accedere alle informazioni sui tipi
Utilizzi la classe Type per accedere ai metadati relativi a un tipo. Esempio:
Suggerimento: utilizzi GetProperties, GetMethods e GetFields per esaminare i membri del tipo.
using System;
class SampleClass {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Type Name: " + type.Name);
Console.WriteLine("Properties:");
foreach (var prop in type.GetProperties()) {
Console.WriteLine("- " + prop.Name);
}
}
}
Creare dinamicamente oggetti
È possibile utilizzare la reflection per creare dinamicamente istanze di una classe. Esempio:
Punto chiave: utilizzi Activator.CreateInstance per creare oggetti a runtime.
using System;
class SampleClass {
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var property = type.GetProperty("Name");
property.SetValue(instance, "Reflection Example");
Console.WriteLine("Name: " + property.GetValue(instance));
}
}
Invocare dinamicamente i metodi
La reflection consente di chiamare metodi a runtime senza conoscerli in fase di compilazione. Esempio:
Suggerimento: utilizzi GetMethod e Invoke per effettuare chiamate dinamiche ai metodi.
using System;
class SampleClass {
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var method = type.GetMethod("Greet");
method.Invoke(instance, new object[] { "World" });
}
}
Lavorare con gli attributi
È possibile utilizzare la reflection per esaminare gli attributi personalizzati applicati a tipi, metodi o proprietà. Esempio:
Punto chiave: utilizzi GetCustomAttributes per recuperare le informazioni sugli attributi.
using System;
[AttributeUsage(AttributeTargets.Class)]
class SampleAttribute : Attribute {
public string Description { get; }
public SampleAttribute(string description) {
Description = description;
}
}
[Sample("This is a sample class.")]
class SampleClass {}
class Program {
static void Main() {
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(SampleAttribute), false);
foreach (SampleAttribute attr in attributes) {
Console.WriteLine("Description: " + attr.Description);
}
}
}
Sfida pratica
Crei un programma che utilizzi la reflection per esaminare una classe, elencarne i metodi e le proprietà e invocare dinamicamente uno dei suoi metodi. Esempio:
using System;
class SampleClass {
public int Add(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Methods:");
foreach (var method in type.GetMethods()) {
Console.WriteLine("- " + method.Name);
}
object instance = Activator.CreateInstance(type);
var addMethod = type.GetMethod("Add");
int result = (int)addMethod.Invoke(instance, new object[] { 5, 3 });
Console.WriteLine("Result of Add: " + result);
}
}
Buone pratiche per l'utilizzo della reflection
Ecco alcune buone pratiche:
- Utilizzi la reflection con moderazione, poiché può influire sulle prestazioni.
- Memorizzi nella cache i risultati della reflection per migliorare l'efficienza nelle chiamate ripetute.
- Preferisca, quando possibile, soluzioni in fase di compilazione rispetto alla reflection.
- Utilizzi la reflection per scenari dinamici come plugin e framework.
Suggerimento: combini la reflection con attributi personalizzati per creare applicazioni flessibili e dinamiche.
Ottimo lavoro!
Congratulazioni! Ha imparato a utilizzare la reflection per esaminare e manipolare i tipi a runtime in C#. Questa è la conclusione della categoria "Funzionalità avanzate di C#". Proseguiamo verso nuove avventure nel mondo della programmazione!

Impara C# con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 93
- Lezioni
- 346
Domande Frequenti
La lezione «Capire la reflection in C#» è gratuita?
Sì — il testo completo di «Capire la reflection in C#» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 5 lezioni in totale.
Cosa imparerò in «Capire la reflection in C#»?
Usi la reflection per esaminare e manipolare oggetti durante l’esecuzione Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 5 di 5.
Quanto tempo richiede la lezione «Capire la reflection in C#»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Generics in C#
- Async e await: lavorare con codice asincrono
- Capire thread e task
- Esplorare delegati e lambda
- Capire la reflection in C#