Cosa sono gli Extension Methods?

Utente HTML.it
chiede

Cosa sono gli Extension Methods?

Redazione HTML.it
risponde

Gli Extension Methods sono una caratteristica introdotta con il .NET Framework 3.5 grazie alla quale è possibile aggiungere nuovi metodi e proprietà ad un “tipo” esistente.

Supponiamo di eseguire sempre la stessa operazione su un certo tipo di dati, ad esempio ottenere un array di byte a partire dal contenuto di una stringa. Una soluzione tipica consiste nel definire una classe statica con il metodo che esegue l’operazione, quindi richiamarlo utilizzando qualcosa del tipo:

string message = "Messaggio";
byte[] buffer = Utils.GetBytes(message);

In una situazione del genere è possibile utilizzare un Extension Method, che deve essere creato come metodo statico all’interno di una classe statica del progetto:

public static class Utils
{
  public static byte[] GetBytes(this string str)
  {
    return Encoding.Default.GetBytes(str);
  }
}

La parola chiave this indica che il metodo GetBytes è un’estensione della classe String. In pratica, la classe String viene arricchita con un nuovo membro, che può essere richiamato come qualsiasi altro:

string message = "Messaggio";
byte[] buffer = message.GetBytes();

Anche l’IntelliSense di Visual Studio visualizzerà il nuovo metodo, segnalando che si tratta di un’estensione della classe.

Per approfondire:

Le novità di C# 3.0