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?