Kleine Korrektur:
Delphi-Quellcode:
function TObjectHelper.TryCast<TCastType: Class>(out Instance: TCastType): Boolean;
begin
Result := Self is TCastType;
if Result then
Instance:= Self
else
Instance:= nil;
end;
Allerdings könnte ein public sichtbarer
helper for TObject
das ganze übrige Helper Szenario obsolet machen.
Besser wäre vielleicht ein Record:
Delphi-Quellcode:
type
TCaster = record
function TryCast<TCastType: Class>(Source: TObject; out Target: TCastType): Boolean;
end;
function TCaster.TryCast<TCastType>(Source: TObject; out Target: TCastType): Boolean;
begin
Result := Source is TCastType;
if Result then
Target := Source
else
Target := nil;
end;