Ho una classe che mantiene un elenco di oggetti di un'altra classe. L'elenco di oggetti è una proprietà pubblica. Vorrei impedire agli utenti di aggiungere e rimuovere oggetti direttamente per elencare in questo modo:Esiste un'interfaccia di raccolta .NET che impedisce l'aggiunta di oggetti?
MyObject.MyListProperty.Add(object);
Invece voglio loro di utilizzare metodo che internamente fare un po 'di elaborazione e quindi aggiungere oggetti alla lista.
Ho alcune idee:
- creare discendente di
List<T>
e override di aggiungere e rimuovere - ritorno nuova copia di lista attraverso la proprietà getter (lista è relativamente breve, non più di 30 oggetti)
C'è qualche interfaccia di raccolta che non ha Aggiungi e rimuovi?
Edit:
ho intenzione di andare con ReadOnlyCollection<T>
. Il motivo è che la raccolta incartata può essere aggiornata e le modifiche saranno immediatamente visibili nell'oggetto di sola lettura (vedere Esempi di codice MSDN per ReadOnlyCollection<T>
e AsReadOnly()
). Ciò consente di creare una lista di sola lettura una sola volta.
Il problema con IEnumerable
è che l'oggetto può essere reindirizzato all'originale List<T>
e quindi direttamente manipolato.
Sono stato anche alla ricerca di questo +1 – Ravisha