La versione 8 di C# introduce una funzionalità molto controversa: i default interface method. Storicamente, un'interfaccia è una semplice dichiarazione di proprietà e metodi che chiunque implementi quell'interfaccia deve implementare. Tramite questa nuova funzionalità, possiamo invece aggiungere non solo la dichiarazione, ma anche il codice di un metodo all'interno di un'interfaccia.
Per capire lo scopo di questa funzionalità, partiamo da un esempio. Supponiamo di avere un'interfaccia con due metodi: GetOrders e GetCustomers.
public interface MyInterface { List<Order> GetOrders(); List<Order> GetCustomers(); }
Supponiamo ora che questa classe venga utilizzata da diverse librerie all'interno del nostro sistema e che a un certo punto abbiamo la necessità di estendere l'interfaccia con un nuovo metodo: GetProducts. Aggiungere questo metodo all'interfaccia significa dover poi andare a modificare tutte le classi che implementano l'interfaccia per implementare il nuovo metodo. A seconda delle dimensioni e della complessità della nostra applicazione, quest'operazione può richiedere molto tempo.
In questa fase entrano in gioco i default interface method, in quanto possiamo non solo dichiarare il nuovo metodo, ma anche fornirne un'implementazione di default che tutte le classi usano se non ne forniscono una propria implementazione.
public interface MyInterface { List<Order> GetOrders(); List<Order> GetCustomers(); List<Product> GetProducts() { return new List<Product>(); } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Evitare il flickering dei componenti nel prerender di Blazor 8
- Rilasciata la Beta 2 di Visual Studio 2008
- tra pochi minuti inizia la keynote della seconda giornata. seguila live su http://aspitalia.com/mix-11 #mix11
- .@dbochicchio ora su #aspnetcore 2 a #netconfit https://aspit.co/netconf-17
- Utilizzare angular-cli per creare una direttiva in Angular 2
- Windows Vista: il ritorno di WinFS con la beta1
- .@CristianCivera tra poco su #azure con i suoi tips&tricks per lo sviluppatore web: https://aspit.co/web15-live #aspilive
- Le novità di C# 10