Guida al Visual Basic .NET
Capitolo 107° - Estendere il Namespace My
Come se non bastasse la sua già straordinaria potenza, il namespace My è ulteriormente estendibile dal programmatore, in modo da
adattarlo alle specifiche esigenze dell'applicazione. Prima di utilizzare questa funzionalità, tuttavia, sarebbe opportuno valutare anche
le alternative e concludere se non sia meglio una normale libreria oppure un file serializzato. Namespace My Public Class Utilities 'Con questa versione, si utilizza la classe come contenitore 'di metodi o membri statici, rendendola simile a un modulo Public Shared Function Percent(ByVal Num As Int32, _ ByVal Max As Int32) As Single Return (Num * 100) / Max End Function End Class End Namespace Il secondo metodo prevede la creazione di un modulo nascosto entro il quale figura una proprietà che espone un'istanza della classe, definita altrove. Infatti, l'infrastruttura di My non espone direttamente i membri Application, Settings, eccetera... ma moduli pubblici nascosti con nomi del tipo MyApplication e MySettings (anteponendo quindi "My" al nome del membro) nei quali vengono definiti tali oggetti come proprietà. Per facilitare la compresione, ecco un esempio simile a quello di prima: Namespace My 'L'attributo HideModuleName permette di nascondere il 'nome del modulo nella scala gerarchica dell'IntelliSense 'e accedere direttamente a Utilities <DebuggerNonUserCode(), _ Microsoft.VisualBasic.HideModuleName()> _ Public Module MyUtilities Private _Utilities As New Utilities Public ReadOnly Property Utilities() As Utilities Get Return _Utilities End Get End Property End Module End Namespace Public Class Utilities 'Con questa versione, si utilizza la classe come vero oggetto, 'ma i metodi di istanza che non utilizzano altri campi d'istanza 'possono comunque essere utilizzati allo stesso modo dei metodi 'statici, poichè l'oggetto è già inizializzato all'interno del 'modulo sopra definito Public Function Percent(ByVal Num As Int32, _ ByVal Max As Int32) As Single Return (Num * 100) / Max End Function End Class Per aggiungere, invece, oggetti di secondo livello, ossia gerarchicamente subordinati a uno qualsiasi dei membri già appartenenti a My, basta inserire nel nuovo namespace una classe Partial Friend il cui nome sia formato dal prefisso "My" e dal nome del membro da cui derivare la classe in questione. Ad esempio, questo codice espone il dns di un server usato per le connessioni internet in My.Application: Namespace My 'Aggiunge membri a My.Application Partial Friend Class MyApplication Private _ServerName As String = "http://www.example.com" Public Property ServerName() As String Get Return _ServerName End Get Set(ByVal Value As String) _ServerName = Value End Set End Property End Class End Namespace
C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...
|