Delphi-Quellcode:
type
TMyObjectList<T> = class(TObjectList<T>);
public
function Search(const predicate: TPredicate<T>): T;
end;
Einsatz:
Delphi-Quellcode:
myDriver := driverList.Search(
function(d: TDriver): Boolean
begin
Result := d.Id = 1234
end);
Vorteil: Du schränkst deine generische Listenklasse nicht auf bestimmte Suchkriterien ein, die nur für bestimmte Arten von T gelten.
Wenn dir das Schreiben der anonymen Methode zu unhandlich ist, kannst du das auch noch auslagern:
Delphi-Quellcode:
function DriverById(i: Integer): TPredicate<TDriver>;
begin
Result :=
function(d: TDriver): Boolean
begin
Result := d.Id = i;
end;
end;
Einsatz:
Delphi-Quellcode:
myDriver := driverList.Search(DriverById(1234));
Eventuell kannst du dir auch Spring4D anschauen, die Listen dort unterstützen alle Arten von Suchen, Filtern, etc