Devo restituire IList o List al controller in MVC?
-
08-07-2019 - |
Domanda
Qual è la differenza rispetto al controller che ottiene il ritorno rispetto al rendering dell'elenco?
Nel contesto dati Linq:
public IList<Response> GetResponses(int ID)
{
var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;
return responses.ToList();
}
O
public List<Response> GetResponses(int ID)
{
var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;
return responses.ToList();
}
Soluzione
Dubito che ci sia molta differenza rispetto al responsabile del trattamento, ma probabilmente dovresti provare a rivelare quante meno informazioni possibili sui dati privati delle tue lezioni.Ciò significa esporre interfacce anziché tipi concreti e utilizzare l'interfaccia che espone la quantità minima di informazioni necessarie al client per operare sui dati.
Se il controller necessita solo di un file IEnumerable<Response>
allora dovresti considerare di renderlo il tipo di reso di GetResponses
.
Altri suggerimenti
La differenza è che non sarà necessario aggiornare il controller se si modifica l'implementazione dell'elenco se si utilizza l'interfaccia IList. Probabilmente non è un grosso problema a meno che tu non abbia intenzione di rendere la tua biblioteca disponibile per gli altri. In tal caso, l'astrazione è probabilmente giustificata in quanto non sarai l'unico a dover aggiornare il codice se apporti la modifica.
Valuta la possibilità di restituire un array, considera di accettare IEnumerable come parametro.