Dove conservare le variabili globali nell'app Windows Form

3

Ho qui un'applicazione di gestione dei dipendenti Vb.Net. Ha dipendenti, manager, squadre, corsi di formazione e così via.

Il modo in cui l'applicazione viene impostata ora, i dati vengono letti dal database nell'evento di caricamento del modulo di avvio (frmMain) e conservati sotto forma di proprietà pubbliche. Dopo che tutte le altre forme (e ce ne sono molte) fanno riferimento a quelle liste (lista (di dipendente), lista di (squadra)) che utilizzano queste proprietà. Ad esempio

dim emp = frmMain.Employees.Find(Function(x) x.ID = 128) , or
dim team1 as new Team
frmMain.Teams.Add(team1)

Ritengo che questo sia un pessimo modo di risolvere questo problema, ma sono bloccato nel decidere come dovrebbe essere fatto.

Qualche classe singleton che manterrebbe tutte queste liste (ce ne sono molte) istanziate all'avvio dell'applicazione, o c'è un modo migliore per farlo?

    
posta GlutVonSmark 24.07.2014 - 15:09
fonte

1 risposta

2

Ho risolto questo problema in passato creando un modulo pubblico chiamato Globals.vb che contiene uno o più tipi di strutture VB che raggruppano logicamente le variabili. È quindi possibile creare una singola istanza pubblica di ogni struttura. Ad esempio, una variabile di struttura ApplicationState può disporre di proprietà orientate alla raccolta per dipendenti e team. Questo ti permette di scrivere un codice come questo:

if ApplicationState.Teams.Contains(thisTeam) then ...

Oppure, dal tuo esempio:

Dim emp = ApplicationState.Employees.Where(function(z) z.ID = 128).FirstOrDefault

Questo mette tutte le variabili globali in un singolo posto (relativamente) facile da capire e formato. Consente inoltre di utilizzare il costruttore della struttura per inizializzare i valori.

    
risposta data 24.07.2014 - 20:37
fonte

Leggi altre domande sui tag