Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] i moduli

ciao a tutti,
io ho sempre programmato in visual basic dal 3.0 al 6.0 usando
variabili di tipo public all'interno dei moduli.
Con vb .NET mi è stato detto che i moduli non devo + usarli e devo
passare alle classi ma... come?
Mi spiego meglio ho un programma con 5 form, nella prima (accesso al
sistema) il mio utente imposta nome utente e pwd. Il nome utente mi
serve in tutto il mio progetto.
Io avrei fatto un modulo con
Public NomeUtente as string
se non posso usare i moduli cosa devo fare?
Grazie per l'aiuto

 se non posso usare i moduli cosa devo fare?
Hai almeno un paio di alternative.
Es:
1)
Public Class LoginInfo
    Private _userName As String
    Private _password As String
    Public Sub New(ByVal userName As String, ByVal password As String)
        _userName = userName
        _password = password
    End
    ' Spero di ricordarmi la sintassi corretta
    Public Property ReadOnly UserName As String
        Get
            Return _userName
        End Get
    End
    Public Property ReadOnly Password As String
        Get
            Return _password
        End Get
    End
End Class
Poi la istanzi al momento del login e la passi alle varie classi che la
richiedono.
2)
Public Abstract Class LoginInfo
    ' Anche se sconsigliano di esporre direttamente
    ' i campi, io lo preferisco anche per brevità
    ' per classi che assomigliano più a strutture
    ' che a classi vere e proprie
    Public Shared UserName As String
    Public Shared Password As String
End Class
E poi dal tuo programma usi semplicemente
LoginInfo.UserName = ...
LoginInfo.Password = ...
Ciao
--
Reporting tool: 
http://www.neodatatype.net

ciao, grazie 1000 per i tuoi consigli. la soluzione 1 avevo già
provato ad adottarla ma non ci sono riuscita per una cosa... come
faccio a passarla agli altri form?
io non avevo usato il new ma semplicemente
public Class Loginfo
    Public Property GestCE() As String
        Get
            Return CE
        End Get
        Set(ByVal Value As String)
            CE= Value
        End Set
    End Property
End class
poi nel primo form
dim a as new Loginfo
a.GestCE="utente"
e qui mi sono fermata....
per la seconda soluzione... i miei colleghi mi hanno sconsigliato di
mettere tutte le variabili come shared... perchè mi hanno detto che è
una via di mezzo tra il modulo e le classi e poi non bisognerebbe tu
che ne pensi?
Grazie ancora

Con vb .NET mi =E8 stato detto che i moduli non devo + usarli e devo


 che ne pensi?
Non c'è bisogno di pensare, la spiegazione è semplice e già pronta.
Il concetto di modulo in .Net che io sappia esiste solo per VB, perchè è un
retaggio di VB a partire dal QBasic fino a VB6.
I moduli vengono compilati come classi astratte con tutti i metodi Shared
(in .Net non esiste il concetto di modulo), ed ecco perchè una classe con
tutti i membri Shared potrebbe essere vista come una "via di mezzo" tra una
"vera" classe e un modulo, ma non ha senso l'appunto.
Dai ad es. un occhio ad una delle classi basi del framework: Convert, o la
Math... che abbiano toppato a progettare il framework? ;)
Sarebbe più corretto dire che una classe con *proprietà* (o campi) tutte
Shared non è una buona idea perchè si avvicina troppo al vecchio concetto di
variabili pubbliche, e alla fine è solo una scorciatoia per evitare il
passaggio dell'oggetto usato per il sistema (1).
Ciao
--
- .Net Reporting tool
http://www.neodatatype.net

Ciao, scusa ma sono stata poco chiama.
Questo il codice che ho sviluppato in VB .NET:
--------------------------------------------
Form 1
dim ClsUtenti as new ClasseUtente
ClsUtenti.GestioneUtente= "vipe"
dim Frm2 as new Form2
Frm2.l_ClsUtenti = ClsUtenti
Frm2.show
--------------------------------------------
Form 2
public l_ClsUtenti as ClasseUtente
...
txtutente.text=l_ClsUtenti.GestioneUtente
--------------------------------------------
Public Class ClasseUtente
    Private NomeUtente As String
    Public Property GestioneUtente() As String
        Get
            Return NomeUtente
        End Get
        Set(ByVal Value As String)
            NomeUtente= Value
        End Set
    End Property
End Class
è giusto?
Grazie per i tuoi consigli

 č giusto?
Sě, puň andare anche cosě, a parte l'obrobriosa scelta dei nomi :)
Dai una lettura a questo:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconnamingguidelines.asp
e se proprio vuoi farti una cultura... ;)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconnetframeworkdesignguidelines.asp


grazie