Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Extension Methods

Tra le numerosissime novità del .NET Framework 3.5 che sto sperimentando in questi giorni, oggi voglio segnalare gli Extension Methods. Come riportato qui:

The basic idea is that the set of methods available on an instance of a particular type is open to extension. In effect, we can add new methods to existing types.

Supponiamo di eseguire sempre la stessa operazione su un certo tipo di dati, ad esempio ottenere l'array di byte a partire dal contenuto di una stringa. Una soluzione tipicamente adottata fino ad oggi 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 definire un Extension Method:

1 public static class Utils 2 { 3 public static byte[] GetBytes(this string str) 4 { 5 return Encoding.Default.GetBytes(str); 6 } 7 }

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

string message = "Messaggio"; byte[] buffer = message.GetBytes(); //Stesso risultato del primo esempio.

Anche l'IntelliSense di Visual Studio visualizzerà il nuovo metodo, segnalando che si tratta di un'estensione della classe. Gli Extension Methods sono supportati sia da C# sia da Visual Basic. Quest'ultimo linguaggio non supporta la parola chiave this, quindi per definire un Extension Method è necessario specificare l'attributo <Extension()> (contenuto nel namespace System.Runtime.CompilerServices.ExtensionAttribute) prima della dichiarazione del metodo. Le estensioni devono essere metodi statici contenuti in classi statiche.

Technorati Tags: , ,

Print | posted on lunedì 5 marzo 2007 22:18 | Filed Under [ C# VB .NET Orcas & .NET 3.5 ]

Feedback

Gravatar

# re: Extension Methods

L'idea è bella, solo non mi piace la sintassi.

"this string" è veramente brutto.
06/03/2007 11:46 | Antonio Di Motta
Gravatar

# re: Extension Methods

Considera comunque che il "this" è solo uno shortcut, anche in C# puoi utilizzare l'attributo [Extension] per decorare il metodo, come avviene in Visual Basic .NET.
06/03/2007 11:51 | Marco Minerva
Gravatar

# Una sintassi abbreviata per le propriet

09/03/2007 22:13 | Around and About .NET World
Gravatar

# re: Extension Methods

Molto interessante
09/03/2007 22:30 | Diego Martelli
Gravatar

# Le prime esperienze con Orcas

26/04/2007 17:10 | Around and About .NET World
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET