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: