Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

class methode an Klassenreferenz aufrufen

  Alt 9. Feb 2022, 21:50
Hallo,

gegeben ist Code mit dieser Struktur:

Delphi-Quellcode:
type
  TDECHashClass = class of TDECHash;

  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 (TDECPasswordHash(Hash).GetMaxSaltLength > 0) then
Mir ist klar warum es knallt. TDECPasswordHash implementiert die GetMaxSaltLength
Klassenmethode ja nicht, sondern erst die davon erbende THash_BCrypt.
Nur: wie an diese rann kommen, wenn man nur eine TDECHashClass Klassenreferenz
von der BCrypt Klasse aus der Registrierungsliste bekommt?

Grüße
TurboMagic
  Mit Zitat antworten Zitat