>Ciao, prima di tutto grazie mille per la risposta.
>La cosa non è così semplice....dato che si tratta di un progetto
>per un esame devo rispettare delle richieste (anche se ovviamente
>non sono le scelte migliori/piu semplici).Conosco i dataset,
>ma io non posso usarli in questo ambito.
forse hai frainteso, i dataset non li usi, usi proprio le tue classi (infatti fai riferimento ad un "object" come vedi dalla gif animata).
>Praticamente, ho 4 classi (room, floor, person, reservation),
>4 liste statiche nella form principale. Dovrei creare una classe
>genericview<room o floor o person..ecc> che all'interno
>abbia metodi tipo: aggiorna datagridview da lista.
ok forse adesso ho capito cosa devi fare, tu devi farti una collection<T> che abbia il metodo che ti riempia la grdiview.
Ecco un esempio codice che lo fa:
//--- il "where" ti obbliga a crearla con un oggetto
//--- altrimenti potresti farla anche con int,string etc...
public class Collezione<T> where T:class
{
//--- uso un IEnumerable<T> perchè più generico (va bene anche con array ad esempio)
//--- ma potresti tipizzarti di più mettendo List<T> etc...
public void CaricaGriglia(DataGridView griglia, IEnumerable<T> collezione)
{
//--- qui puoi fare un ciclo foreach ad esempio...
//--- ma la cosa più banale è proprio impostare la DataSource
//--- così la griglia si arrangia a fare tutto
griglia.DataSource = collezione;
}
}
e poi dal tuo programma la richiami con:
//--- uso "room" ma vale per tutte le tue classi
Collezione<room> coll = new Collezione<room>();
coll.CaricaGriglia(... , ...);
se invece la vuoi statica, allora puoi firmarla statica e non ti serve creare la variabile "coll", ma tipizzata, richiami il metodo che ti serve.
Come vedi, il fatto di usare generics, è tutto nella dichiarazione di un tipo "T" che appunto non viene definito nella definizione della classe, ma viene definito dopo, quando la usi.
Quindi ha una funzione generica, ovvero lo puoi usare in vari contesti.
La "constraint" viene data dal "where" questo è ovviamente opzionale, ma ti aiuta a "scremare" i tipi con cui funziona la tua classe...la cosa è veramente utile, spessissimo infatti ti permette di migliorare il tuo codice riciclandolo molto, evitando però errori a runtime, inquanto i tipi sono controllati in fase di compilazione.
Un paio di link utili:
http://msdn.microsoft.com/it-it/library/512aeb7t.aspx
http://msdn.microsoft.com/en-us/vs2005/aa718334.aspx ( ci sono esempi anche su generics)
http://www.15seconds.com/issue/031024.htm
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo