Mam klasę, która utrzymuje listę obiektów innej klasy. Lista obiektów jest własnością publiczną. Chciałbym, aby uniemożliwić użytkownikom dodawanie i usuwanie obiektów bezpośrednio do listy tak:Czy istnieje interfejs kolekcji .NET, który uniemożliwia dodawanie obiektów?
MyObject.MyListProperty.Add(object);
Zamiast tego chcę, żeby wykorzystać metodę, która będzie wewnętrznie zrobić niektóre przetwarzania, a następnie dodać obiekt do listy.
Mam kilka pomysłów:
- stworzyć potomka
List<T>
i zastąpić dodawać i usuwać - powrotną świeżą kopię listy poprzez własności getter (lista jest stosunkowo krótki, nie dłuższy niż 30 obiekty)
Czy istnieje interfejs kolekcji, który nie ma opcji Dodaj i usuń?
Edit:
mam zamiar iść z ReadOnlyCollection<T>
. Powodem jest to, że kolekcja zapakowanych może być aktualizowana, a zmiany będą natychmiast widoczne w obiekcie tylko do odczytu (zobacz przykłady kodu MSDN dla ReadOnlyCollection<T>
i AsReadOnly()
). Dzięki temu lista tylko do odczytu może zostać utworzona tylko raz.
Problem z IEnumerable
polega na tym, że obiekt może zostać bezpośrednio przeniesiony do oryginalnego List<T>
, a następnie bezpośrednio.
Ja również poszukuje tego +1 – Ravisha