Wenn es bei ErrorAt knallt, dann stimmt der Typ in T nicht mit dem im Sender übererin.
Wenn ich alles rauswerfe, was doppelt ist, da IS es bereits macht (GUARD), dann bleibt das übrig:
Delphi-Quellcode:
class function TMyCast<T>.CanCast( Sender : TObject ) : Boolean;
begin
Result := Sender is T;
end;
class function TMyCast<T>.TryCast( Sender : TObject; var ACasted : T ) : Boolean;
begin
ACasted := nil;
Result := Sender is T;
if Result then
ACasted := Sender as T; // oder := T(Sender);
end;