Una delle novità di Visual Studio 2008 (ovvero del Framework 3.5) è l’esistenza di quelli che sono definiti “Extension Methods”. Attraverso tali metodi è possibile estendere una classe (anche quelle di base) senza doverla per forza derivare.
Il tutto si sviluppa intorno alla costruzione di una classe statica e di uno o più metodi statici, caratterizzati dall’utilizzo dell’operatore “this” tra i parametri.
Vediamo l’utilità di quanto appena descritto con un esempio :
namespace ConsoleTest
{
public static class clsExtension
{
public static bool IsInt32(this string pString)
{
Int32 tNumber;
bool tResult = Int32.TryParse(pString, out tNumber);
return tResult;
}
}
}
Questa è la classe statica che ci permette di estendere la classe base “String”, aggiungendole il metodo “IsInt32” che restituisce true o false a seconda che il contenuto della stringa sia, oppure no, un Int32.
L’utilizzo della sopraccitata classe è decisamente semplice :
static void Main(string[] args)
{
string tStr = "1234";
Console.WriteLine("{0} is number : {1}", tStr, tStr.IsInt32());
tStr = "abc";
Console.WriteLine("{0} is number : {1}", tStr, tStr.IsInt32());
Console.ReadKey();
}
In questo modo abbiamo aggiunto alla classe String la possibilità di restituire, senza troppi giri e/o ripetizioni, un valore boioleano che ci indichi se questa contiene un numero (Int32) valido oppure no. Ovviamente, questa è solo una delle innumerevoli possibilità, limitate solo dalla nostra fantasia e dalle nostre necessità...
Questa è una delle “chicche” scritte da Dino Esposito in un interessante (ma purtroppo breve) articolo intitolato “Inside Visual Studio 2008”, pubblicato su Dr.Dobb’s Journal di Febbraio 2008. Che dire ? Ancora una volta, Grazie Dino !!!!!!