У меня есть класс, который поддерживает список объектов другого класса. Список объектов является публичной собственностью. Я бы хотел, чтобы пользователи не добавляли и не удаляли объекты непосредственно в список:
MyObject.MyListProperty.Add(object);
Вместо этого я хочу, чтобы они использовали метод, который будет внутренне выполнять некоторую обработку, а затем добавлять объект в список.
У меня есть некоторые идеи:
- создать потомка
List<T>
и переопределить добавление и удаление - возвращает новую копию списка через свойство getter (список относительно короткий, не более 30 объектов)
Есть ли какой-либо интерфейс коллекции, который не содержит Add and Remove?
Edit:
Я собираюсь пойти с ReadOnlyCollection<T>
. Причина в том, что обернутая коллекция может быть обновлена, и изменения будут немедленно видны в объекте только для чтения (см. Примеры кода MSDN для ReadOnlyCollection<T>
и AsReadOnly()
). Это позволяет создать список только для чтения только один раз.
Проблема с IEnumerable
заключается в том, что объект может быть возвращен в исходный List<T>
, а затем
непосредственно манипулировать.