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: