So nach dem Motto würde ich das machen, ungetestet:
Delphi-Quellcode:
TMyList = class
private
var
FList: TList<IListData>;
public
function Get<T: IInterface>(const AIndex: Integer): T;
end;
...
function TMyList.Get<T>(const AIndex: Integer): T;
begin
if not Supports(FList[AIndex], Result) then
Result := nil;