Delphi-Quellcode:
if TryCast<TEdit>(Sender, Edit) then
Edit.Text := 'tut';
Leider kann Delphi (noch) keine globalen generischen Routinen. (Warum eigentlich?)
Das wüste ich auch gerne, dazumal ich sogar mal eine "Lösung" genannt hatte, wie man es dennoch umgehn könnte.
Einfach eine implizite Klasse drum, um die Funktion, und schon ginge es ohne große Änderung des Compilers.
Nja, aber wenn du
OOP mit arbeitest, und diese "Funktion innerhalb von Methoden verwendest, dann kannst du immernoch den ClassHelper verwenden.
Und im Notfall kombiniert man einfach Beides.
Delphi-Quellcode:
TCastHelper = class helper for TObject
class function TryCast<TCastType: Class>(Source: TObject; out Target: TCastType): Boolean; overload;
function TryCast<TCastType: Class>(out Target: TCastType): Boolean; overload;
end;
Delphi-Quellcode:
// z.B. im ButtonClick:
if x.TryCast(y) or TryCast(x, y) then