Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Esportare metodi extension da Visual Basic

Oggi con Diego abbiamo affrontato una problematica interessante: se in Visual Basic 2008 i metodi extension possono essere definiti solo in moduli, come è possibile compilarli ed esportarli all'interno di class library affinché siano riutilizzabili all'esterno, per esempio da Visual C#?

La risposta ovviamente c'è e la vediamo in questo post. C'è da premettere che ci sono delle regole e best practice da seguire nell'implementazione dei metodi extension, il tutto disponibile nella libreria MSDN a questo indirizzo.

Si crea in primo luogo un progetto di tipo Class Library in Visual Basic, che nel mio esempio espone una classe vuota chiamata UsefulMethods:

Public NotInheritable Class UsefulMethods

 

    Private Sub New()

 

    End Sub

End Class      

Notate il costruttore vuoto e privato con la dichiarazione NotInheritable. Definiamo poi un modulo che contiene un metodo, a titolo di esempio, di tipo extension che valida gli indirizzi e-mail contenuti in stringhe sfruttando le regular expressions:

Imports System.Runtime.CompilerServices

Imports System.Text.RegularExpressions

 

...

 

<Extension()> Public Module Extensions

 

    <Extension()> Public Function IsMailAddress(ByVal mailAddress As String) As Boolean

 

        Dim validateMail As String = _

            "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-z]{2,4}|[0-9]{1,3})(\]?)$"

 

        Return Regex.IsMatch(mailAddress, validateMail)

 

    End Function

End Module

Qui è importante notare che il modulo e il metodo sono dichiarati come Public. Questo è sufficiente per rendere il nostro metodo extension fruibile anche dall'esterno. Compiliamo il progetto per ottenere un assembly in formato .dll.

Come test, aggiungiamo alla soluzione un progetto per la console in Visual C#. Al nuovo progetto aggiungiamo un riferimento al nostro assembly, quindi scriviamo, dopo aver aggiunto una direttiva using UsefulMethods, il seguente codice all'interno del metodo Main:

            Console.WriteLine("Write your e-mail address:");

            string mailAddress = Console.ReadLine();

 

            //Il metodo extension viene riconosciuto

            bool testMailAddress = mailAddress.IsMailAddress();

 

            Console.WriteLine(testMailAddress.ToString());

            Console.ReadLine();

Come potrete osservare, il metodo extension definito in un assembly creato con Visual Basic 2008 è utilizzabile anche dal progetto C#. Avviando il progetto dimostrativo verrà richiesto di digitare un indirizzo e-mail che verrà validato.

Il codice a corredo del post è disponibile a questo indirizzo dell'area download di Visual Basic Tips & Tricks.

Alessandro

Print | posted on mercoledì 20 maggio 2009 02:14 | Filed Under [ .NET Framework Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET