Du konntest es vielleicht so machen:
Delphi-Quellcode:
type
TBaseFunctions = class
procedure MyMethode1; virtual; abstract;
procedure MyMethode2; virtual; abstract;
end;
TBaseFunctionsMeta = class of TBaseFunctions;
TBaseClass = class
function GetFunctions: TBaseFunctionsMeta; virtual; abstract;
end;
//
TBasicSpecificFunctions = class(TBaseFunctions)
procedure MyMethode1; override;
procedure MyMethode2; override;
end;
TBasicClass = class(TBaseClass)
function GetFunctions: TBaseFunctionsMeta; override;
end;
//
TSpecificSpecificFunctions = class(TBaseFunctions)
procedure MyMethode1; override;
procedure MyMethode2; override;
end;
TSpecificClass = class(TBasicClass)
function GetFunctions: TBaseFunctionsMeta; override;
end;
Du hast eine Klasse
TBaseFunctions die bestimmte Funktionen realisiert, die
jedes Mal neu definiert werden
müssen.
Du erbst immer nur von TBaseFunctions.
Innerhalb der Hierarchie TBasicClass, TSpecificClass ... greifst du mittels
GetFunctions auf diese Funktionen zu.
Aber auch hier musst du das override von GetFunctions sicherstellen, aber eben nur einmalig.
Jedoch müsstest du dafür existierenden Code umschreiben. Ob das so sinnvoll wäre. Ich würde lieber per Notepad++ und regulären Ausdrücken prüfen, ob ein override vorhanden ist.