Technology Experience
.NET World

Extension method con Visual Studio 2008

Gli extension method sono una delle novità puramente sintattiche del .NET Framework 3.5. Mi piace chiamarle sintatticamente perchè tecnicamente parlando è possibile ottenere lo stesso risultato con le vecchie versioni del framework. Facendola breve, utilizzando gli extension method è possibile “estendere” un tipo, dotandolo di uno o più metodi, senza creare nuovi tipi, senza la necessità di mettere mano a codice sorgente che magari non avete e – in fin dei conti – senza modificare il tipo originale. Maggiori dettagli su questa pagina di MSDN.

Supponiamo di aver definito un tipo Holiday come segue:

public class Holiday { public string Name { get; set; } public DateTime When { get; set; } }

La classe Holiday espone due proprietà Name e When. Implicitamente il compilatore crea un costruttore parameter-less. Ora: supponiamo di voler esporre un metodo IsPassed(), che ci dice se una certa festa è già passata nell’anno in corso. Se avessi il sorgente della classe, non avremmo problemi: si crea il metodo IsPassed che ritorna bool e siamo a posto. Supponiamo però di non avere il codice sorgente, oppure di non poter estendere la classe Holiday perchè è sealed o per chissà quale motivo. In una situazione di questo tipo, l’unica possibilità che avete è definire un extension method per il tipo Holiday. Guardate il seguente codice:

public static class HolidayExtensionMethod { public static bool IsPassed(this Holiday holiday) { return holiday.Name.Length > 0; } }

E’ una classe statica HolidayExtensionMethod, che espone un metodo pubblico IsPassed che prende in input un’istanza di Holiday. Notare la keyword this fra i parametri di input. Questa è la definizione di un extension method. L’utilizzo è banalissimo: l’Intellisense ci aiuta, perchè il metodo IsPassed() viene visto come se fosse esposto dal tipo Holiday.

static void Main(string[] args) { Holiday h = new Holiday(); h.Name = "Natale"; h.When = new DateTime(2007, 12, 25); bool isPassed = h.IsPassed(); }

Tutto qua.

Technorati Tags:   

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.