Das hier compiliert
Delphi-Quellcode:
interface
...
Type
....
Class Function GetClient<T: IInterface>(Addr: string):T;
Delphi-Quellcode:
Class Function TWSClient.GetClient<T>(Addr: string):T;
var RIO: THTTPRIO;
begin
Result := nil;
RIO := GetLocalRio;
try
//Result := (RIO as T);//[dcc32 Fehler] E2015 Operator ist auf diesen Operandentyp nicht anwendbar
Result := T(RIO);//Das geht
RIO.URL := Addr;
finally
if (Result = nil) then // Das geht dann natürlich auch nicht
RIO.Free;
end;
End;
Wie wirkt sich hardcast vs softcast auf Android, Apple und windows aus wenn man eine Klasse hart in ein Interface castet?
EDIT:
hard Cast arbeitet nicht vernünftig mit der Referenzzählung zusammen...das Objekt ist einfach weg wenn man es so macht...