Quale tipo di C # dovrebbe preferire per la definizione degli elenchi in DTO?

4

Mi chiedevo se esiste un approccio raccomandato per definire una proprietà di un oggetto semplice che viene utilizzata per il trasferimento dei dati, ad esempio tramite una API REST che è una lista di altri oggetti. Quale tipo di C # dovrebbe preferire per definire quelli?

  • List<T> forse? È breve, lo sanno tutti e non è necessario eseguire il cast o trasformarlo in un elenco per l'ordinamento, la modifica ecc.
  • ICollection<T> forse? È un'interfaccia che ha un significato chiaro e supporta altri tipi di enumerazioni, che evita di trasformarle in una lista dal lato del mittente.
  • IEnumerable<T> forse? È persino più severo di ICollection.
  • Array, T[] forse? Ancora più brevi, ma è necessario trasformarle da liste e viceversa. Non è così bello per lavorare con out-of-the-box (beh, REST-response).
posta AyCe 07.09.2017 - 06:50
fonte

1 risposta

8

In generale DTO (oggetti di trasferimento dati) devono essere serializzati per poter essere trasferiti, ad esempio a JSON.

Tipi come IList e IEnumerable possono essere facilmente serializzati ma non sono così facili da deserializzare perché il serializzatore deve selezionare un tipo concreto.

Nella mia esperienza il miglior equilibrio tra convenienza, funzionalità ed efficienza è List<T> , ma il tuo caso d'uso specifico può giustificare una scelta diversa.

Si noti che poiché i DTO tipicamente fanno riferimento a tipi concreti, non possono essere testati e quindi non dovrebbero contenere alcun metodo.

    
risposta data 07.09.2017 - 08:12
fonte

Leggi altre domande sui tag