Добавление к коллекции функций поиска

b существует конечно множество различных

Следующий вид функциональных возможностей, которые мы добавим достаточно просто — это возможность поиска в коллекции для нахождения конкретного объекта Customer. Существует, конечно, множество различных алгоритмов, которые можно применить для выполнения поиска, и множество различных подходов к определению совпадения. Метод Find Интерфейса IBindingList Предназначен для поиска объекта в коллекции с указанием того, какое свойство объектов следует проверять. Метод должен возвращать индекс объекта в коллекции, если найден такой, чье значение свойства совпадает с переданным методу ключом поиска. Для обеспечения возможности поиска нужно переопределить свойство SupportsSearchingCore И метод Find. Однако вместо того, чтобы и далее придерживаться специфического класса коллекции для заказчиков, вы хотите предусмотреть для сортировки и поиска обобщенную реализацию, которая может быть утилизирована для любого специального типа объекта. Для этого можно определить новый, производный от BindingList<T> Обобщенный класс BindingListview<T>. В нем вы реализуете функции сортировки и поиска, а позднее реализуете интерфейс IBindingListView. Затем вы сможете произвести класс CustomerCollection От BindingListView<T>, Специфицировав Customer В качестве типа т, как было сделано ранее с базовым классом BindingList<Customer>. После этого вы сможете пользоваться преимуществами реализованных функциональных возможностей обобщенным образом. Для начала построения класса воспользуйтесь следующим исходным определением, чтобы поддерживать поиск в коллекции: Переопределяет свойство SupportsSearchingCore И возвращает True, Показывая, что вы добавляете к классу коллекции эту возможность. Переопределяет метод FindCore, Который итерирует коллекцию, используя метод GetValue Класса PropertyDescriptor, Чтобы извлечь значение специфицированного свойства текущего объекта, и сравнивает его со значением ключа. Если они совпадают, метод FindCore Возвращает индекс этого объекта в коллекции. Если совпадения не найдено, он по стандартному соглашению. NET возвращает —1.