C# Academy · Lezione

Capire la reflection in C#

Usi la reflection per esaminare e manipolare oggetti durante l’esecuzione

Lezione 5 di 510 passaggi

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!

Capire la reflection in C# — illustrazione 1

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!

Capire la reflection in C# — illustrazione 10
Gratis per iniziare

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

  1. Generics in C#
  2. Async e await: lavorare con codice asincrono
  3. Capire thread e task
  4. Esplorare delegati e lambda
  5. Capire la reflection in C#
← Torna a C# Academy