Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
5.309 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Casten nach etwas generischem

  Alt 5. Jun 2019, 12:18
Delphi-Version: 5
Angenommen ich habe

Delphi-Quellcode:
   uses System.Rtti;

   TVirtualInterfaceEx = class(TVirtualInterface)
      class function Construct<T: IInterface>(..): T;
   end;
mit

Delphi-Quellcode:
class function TVirtualInterfaceEx.Construct<T>(...): T;
var
   virtualInterface: TVirtualInterface;
begin
   virtualInterface := TVirtualInterface.Create( TypeInfo(T) );
   Result := (virtualInterface as T); // "Error E2015"
   (...);
end;
Der Compiler mag das "as T" nicht, obwohl T eigentlich auf IInterface eingeschränkt ist. System.SysUtils.Supports(..) hat das gleiche Problem.

Gibt es hier eine Lösung? Kann ich eine Instanz auf "T" casten wenn T ein IInterface ist?
  Mit Zitat antworten Zitat