Con l'uscita di .NET 10 e quindi C# 14, abbiamo a disposizione una nuova sintassi per scrivere gli extension methods e non solo. Questa nuova sintassi ha come vantaqggio una miglior organizzazione del codice e la possibilità di dichiarare non solo metodi, ma anche proprietà. Grazie al fatto di poter aggiungere altro oltre ai metodi, assistiamo anche a un cambio di nomenclatura. Infatti non si parla più di extension method, ma di extension member. Cominciamo col vedere un esempio di questa nuova sintassi.
//sintassi precedente
public static class MyExtensions
{
//sintassi precedente
public static void IsNullOrWhiteSpace(this string input) => return String.IsNullOrWhiteSpace(input);
}
//nuova sintassi
public static class MyExtensions
{
extension(string input)
{
public void IsNullOrWhiteSpace() => return String.IsNullOrWhiteSpace(input);
public void IsLongerThan3 => return input.Length > 3;
}
}La nuova sintassi ha un solo punto in comune con la precedente: entrambe usano una classe statica per contenitore il codice. Da qui iniziano le differenze. Nella vecchia sintassi creiamo metodi statici che prendono in input un oggetto del tipo da estendere marcandolo con la parola chiave this. Nella nuova sintassi dichiariamo un blocco extension al quale passiamo un parametro che è il tipo da estendere. Tutti i metodi nel blocco extension non hanno bisogno di essere statici e vengono automaticamente attaccati al tipo passato ion input al blocco senza la necessità quindi di passare l'oggetto in input a ogni metodo (nell'esempio il metodo IsNullOrWhiteSpace si attacca alle stringhe perché il blocco extension prende in input una stringa. IsLongerThan3 è invece una proprietà e non un metodo.
Dal punto di vista dell'utilizzo, non cambia invece nulla rispetto al passato. Possiamo continuare a usare metodi e proprietà esattamente come se facessero parte della classe che estendiamo
var x = "test";
if (!x.IsNullOrWhiteSpace())
{
return x.IsLongerThan3;
}
return false;Una cosa importante da sottolineare è che la nuova sintassi sebbene più comoda, non può coprire il 100 dei casi come la precedente. Esistono infatti dei casi limite in cui siamo costretti a usare la precedente sintassi motivo per cui possiamo usarle entrambe senza problemi all'interno dei nostri progetti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.


