Я реализую свой собственный BindingList<T>
, который поддерживает сортировку. Пока все работает хорошо, но я не совсем понимаю, как мне реализовать RemoveSortCore
. Документация не очень понятна, она только говорит:
Удаляет любую сортировку, примененную с ApplySortCore, если сортировка реализована в производном классе
Значит ли это, что я должен восстановить первоначальный порядок предметов? Реализация, показанная в этой статье MSDN , только устанавливает _isSorted
в ложь, фактически не восстанавливая первоначальный порядок, что делает его совершенно бесполезным, ИМХО ...
Если я хочу иметь возможность восстановить первоначальный порядок, я думаю, мне нужно сохранить копию исходной коллекции (или есть ли лучший способ?). Но если я это сделаю, как мне обрабатывать изменения коллекции, пока она сортируется?
- При переопределении
InsertItem
я должен просто добавить новый элемент в конце несортированной копии?
- При переопределении
RemoveItem
мне присваивается индекс в отсортированной коллекции. Но это означает, что если я хочу также удалить элемент из несортированной коллекции, мне нужно найти его исходное положение, которое представляет собой операцию O (n), в то время как RemoveItem
обычно ожидается как операция O (1). Тот же вопрос относится и к SetItem
.
Как бы вы справились с этим? Любые предложения приветствуются