Nachtrag:
Beim Schreiben des vorigen Beitrages ist mir diese Lösung eingefallen:
Delphi-Quellcode:
const
MyDriveInterfaces : array[1..3] of TGUID = (SID_CAR, SID_TRUCK, SID_MOPED);
function TMyList.GetInterfaceGUID(const AInterfaceInstance : ICanDrive) : TGUID;
var
InterfaceGUID: TGUID;
begin
for InterfaceGUID in MyDriveInterfaces do
begin
if Supports(AInterfaceInstance, InterfaceGUID) then
Result := InterfaceGUID;
end;
end;
Zwar muss man bei neuen oder veralteten Interfaces mitdenken und das Array anpacken, aber irgendeinen Tod muss man anscheinend immer sterben.