Du musst auch eine Klassenreferenz auf eine andere Klassenreferenz casten
Delphi-Quellcode:
type
TDECHashClass = class of TDECHash;
TDECPasswordHashClass = class of TDECPasswordHash;
TDECHash = class
public
class function IsPasswordHash: Boolean;
end;
TDECPasswordHash = class(TDECHash)
public
class function GetMaxSaltLength:UInt16; virtual; abstract;
end;
THash_BCrypt = class(TDECPasswordHash)
public
class function GetMaxSaltLength:UInt16; override;
end;
[..]
var
Hash: TDECHashClass;
begin
// beschaffe die Klassenreferenz der ausgewählten Klasse aus einer
// Liste aller registrierten Klassen
Hash := ClassRegistration.GetHashClass('BCrypt');
// Hier knallt es:
if Hash.IsPasswordHash and (TDECPasswordHashClass(Hash).GetMaxSaltLength > 0) then