Appunti
Metodi estensibili
Il Framework 3.5 mette a disposizione un nuovo interessantissimo attributo: Extension. Questo può essere applicato solo a metodi dichiarati
in un modulo e perciò statici. La sua funzione è molto seplice, ma di straordinaria utilità: permette di utilizzare quel
metodo come se fosse un metodo d'istanza di una classe già esistente! Infatti va ad estendere quella determinata classe. Per indicare
al compilatore quale tipo si vuole estendere, bisogna che questo metodo abbia un solo parametro di quel tipo. Ad esempio, se si vuole aggiungere
una funzione di nome Triple a Integer (in modo da ottenere il triplo di un numero richiamandola), la sua signature sarà:
E la si potrà richiamare da qualsiasi variabile Integer:Function Triple(ByVal IAs Integer )As Integer
Ecco un esempio:'Un intero Dim IAs Integer = 80Dim TAs Integer 'T diventa il triplo di I T = I.Triple()
Nell'IntelliSense, i metodi Estensibili hanno la stessa icona di qualunque altro metodo, ma possiedono una freccia blu rivolta verso il basso nell'angolo inferiore destro.Module Module1'Specifica l'attributo Extension: questa funzione sarà 'un'estensione della classe String, poiché accetta 'un unico parametro String <Runtime.CompilerServices.Extension()> _Public Function Reverse(ByVal SAs String )As String 'Questa funzione restituisce una stringa 'invertita Dim ResultAs String = ""'Parte dall'ultimo carattere e, decrescendo, 'arriva fino al primo, accondandolo alla 'stringa risultato For IAs Int16 = S.Length - 1To 0Step -1 Result &= S(I)Next Return ResultEnd Function Sub Main() 'Una nuova stringaDim StrAs String = "Questa stringa verrą invertita."'Stampa la stringa normale Console.WriteLine(Str)'Richiama la funzione Reverse, che grazie all'attributo 'Extension, può essere richiamato dalla stringa 'come se fosse una funzione d'istanza. Console.WriteLine(Str.Reverse) Console.ReadKey()End Sub End Module
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



