Originariamente inviato da luca_gt
Per funzione parametrica intendo una funzione alla quale passo come parametro la stringa della query Sql e mi ritorna una lista di oggetti Unit ( List<Unit> ) in base alla chiave di ricerca impostata. Questo sistema sicuramente funziona ma ritengo che non sia in linea con la programmazione ad oggetti.
Fermo restando che, a mio avviso, la programmazione ad oggetti non impone che tutto debba essere strutturato secondo una gerarchia complessa o un sistema intricato di incastri, ma semplicemente pone le basi per poter creare funzionalità che lavorino vicino ai dati, con la possibilità di proteggerli e di condividere ed estendere la logica modellando il sistema secondo questi principi.

Mi spiego: solo perché si programma ad oggetti e si hanno le varie proprietà di incapsulazione, ereditarietà e polimorfismo, non significa che - per accedere a un database - non sia sufficiente e accettabile creare una semplice classe statica con i metodi che eseguono query e ritornano oggetti.

In breve, non è indispensabile creare strutture complicate, se non occorre, solo perché è possibile farlo all'occorrenza.

Nel tuo caso, secondo me, ammesso che tu non voglia appoggiarti a framework molto funzionali (es. Entity Framework) e che svolgono egregiamente il lavoro che descrivi, dovresti creare una classe "modello" che rappresenti la tua entità (es. un record della tabella da cui provengono i dati) e creare una classe, o una gerarchia di classi, che forniscano metodi in grado di caricare una singola entità (data la chiave primaria), una lista di entità, oppure di aggiornare, inserire, modificare i dati.

Come strutturarla nello specifico è difficile dirlo: comincia a stendere il codice e quando noti che qualcosa può essere riutilizzato includilo in una classe base condivisa.

In breve, o progetti a priori e completamente il sistema di accesso ai dati che intendi realizzare e scrivi il codice, oppure inizi a scrivere e fattorizzi l'implementazione man mano che aggiungi funzionalità.


Originariamente inviato da luca_gt
Mi pare di capire che sia necessario istanziare una interfaccia per la collection Unit, ma sinceramente non saprei come sia corretto implementare il tutto.
L'uso delle interfacce (se parliamo di interface) non è obbligatorio, ma è consigliato.


Affrontare la questione in termini così generici è impossibile, presupponendo che questa struttura debba farla tu.

L'unica cosa che posso suggerire se hai dubbi generali è "documentati"; per dubbi specifici, ma che siano meno teorici di quelli posti, riporta il codice e vediamo.

Ciao!