Как узнать, когда кто-то читает элемент из CollectionBase - PullRequest
1 голос
/ 23 июня 2011

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

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

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

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

Любая помощь будет принята с благодарностью.

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

Ответы [ 2 ]

1 голос
/ 23 июня 2011

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

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

0 голосов
/ 23 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...