per List esplicitamente sì dovrebbe essere privato a seconda di cosa si suppone che la funzionalità che si espone, interfacce come IEnuemerable, ICollection o IList sarebbe una scelta migliore o se si espone una raccolta Vedi risposta SLaks .
Generalmente l'esposizione della struttura e dello stato interni è una cattiva idea e poiché l'oggetto di tipo Elenco è entrambi, si vorrebbe mantenerlo interno. Potrebbe avere senso dare all'utente la possibilità di scorrere su di esso, aggiungere o rimuovere elementi, ma si dovrebbe comunque mantenere l'Elenco interno ed esporre i metodi Aggiungi/Rimuovi o come minimo esporre un'interfaccia che permetta di cambiare il tipo di rappresentazione interna senza influire sull'interfaccia pubblica.
Inoltre, se si espone utilizzando un'interfaccia, è consigliabile utilizzare l'interfaccia più ristretta possibile.
Quindi, se il codice client deve solo enumerarlo. utilizzare IEnumerable se il codice client deve indicizzare utilizzare ICollection e così via.
ulteriormente se si espone come IEnumerable si dovrebbe fare in modo che ciò che mai ritorni è in realtà solo leggere o utilizzando una unica classe di raccolta leggere o mediante l'uso di un blocco iteratore
EDIT dopo l'aggiornamento Per quanto riguarda il tuo esempio. Chiediti ha senso che chiunque tranne il datore di lavoro possa cambiare chi sono i suoi dipendenti? per me è nelle parole che hai già scelto. Il Datore di lavoro si avvale del Dipendente e dovrebbe avere il pieno controllo su chi siano i suoi/suoi dipendenti.Quindi in questo caso particolare lo terrei privato ed esporrò il noleggio (impiegato IEmployee) e Fire (impiegato IEmployee) in questo modo il codice dichiara chiaramente l'intento
fonte
2010-10-05 12:00:55
Si potrebbe desiderare di espandere un po 'sul contesto è una domanda molto ampia, con molto poco informazioni di contesto che rende difficile dare una risposta precisa –
Perché DoNotExposeGenericLists [FxCop regola] raccomando che espongo Raccolta invece di Lista ? http://blogs.msdn.com/b/codeanalysis/archive/2006/04/27/585476.aspx –