Как узнать, когда кто-то читает элемент из CollectionBase

Я не уверен, возможно ли это с помощью класса CollectionBase. Я хотел бы знать, когда кто-то обращается к элементу в классе CollectionBase.

Конечная цель - создать "VirtualMode" (аналог элемента управления DataGridView), который позволяет мне проверять и проверять данные, поступающие до того, как пользователь их получит.

Итак, что может случиться, они могут создать коллекцию, скажем, 20 объектов, внутренне мы модифицируем IList, чтобы он содержал 20 нулевых объектов, затем, когда они пытаются прочитать элемент, если он нулевой, мы идем во внешний источник данных и читаем это в то время. Затем мы заменяем существующий нулевой объект классом чтения и в следующий раз, когда они пытаются получить к нему доступ, они получают кешированную версию.

После ввода этого. Интересно, будет ли OnValidate подходящим местом для этого?

Будем очень благодарны любой помощи.

Тревор Уотсон

2 ответа

Решение

Это невозможно с CollectionBase, OnValidate() вызывается только до OnInsert(), OnRemove(), а также OnSet(),

Вы можете унаследовать от ArrayList и переопределить свойство индексатора (ArrayList.Item).

Похоже, вы ищете виртуализированную коллекцию. Эта статья о CodeProject имеет хорошую реализацию (она предназначена для привязки данных в WPF, но, вероятно, ее можно использовать в другом контексте)

Другие вопросы по тегам