Da FindByID sowieso zur Klasse TMyBase gehört und FindByID ausschließlich eine Lösung für TMyBase darstellt und Generics an der Stelle nicht mehr benötigt werden, finde ich den Weg unnötig kompliziert.
So fände ich es "logischer"
Delphi-Quellcode:
type
TMyListSpecific = TList<TMyBase>;
TMyList = class(TMyListSpecific)
public
constructor create;
destructor destroy; override;
function FindByID(ID : string) : TMyBase;
end;
function TMyList.FindByID(ID: string): TMyBase;
var
c: integer;
begin
result := nil;
for c := 0 to Count - 1 do
if Items[c].ID = ID then
result := Items[c];
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.