Ich denke ich komme der Sache näher
Hatte gerad auch noch eine kleine Idee dazu, die aber (in meiner Version) voraussetzt, dass Parameterliste und evtl. Rückgabetyp der einzuerbenden Methoden alle gleich sind. Vielleicht lässt sich das ja auch noch umbasteln... Ist grad zu spät um da noch qualifiziert weiter zu denken
Hier mal was mir grad in den Sinn kam:
Delphi-Quellcode:
type
TCFunc = function(a, b: Integer): Integer of object;
TMethodClass = class
public
class function Add(a, b: Integer): Integer;
class function Sub(a, b: Integer): Integer;
end;
TMyClass = class
private
FMethods: TMethodClass;
function GetMethod(s: String): TCFunc;
public
property Method[s: String]: TCFunc read GetMethod; default;
end;
implementation
{ TMethodClass }
class function TMethodClass.Add(a, b: Integer): Integer;
begin
result := a+b;
end;
class function TMethodClass.Sub(a, b: Integer): Integer;
begin
result := a-b;
end;
{ TMyClass }
function TMyClass.GetMethod(s: String): TCFunc;
begin
if s = 'Add' then result := FMethods.Add
else
if s = 'Sub' then result := FMethods.Sub;
end;
// Anwendung
procedure TuWas;
var
tmp: TMyClass;
x: Integer;
begin
tmp := TMyClass.Create;
x := tmp.Method['Add'](2, 3);
x := tmp.Method['Sub'](x, 5);
// Leider klappt, trotz default-tag folgendes nicht:
x := tmp['Add'](2, 3);
x := tmp['Sub'](x, 5);
// Der Compiler meckert, aber ich kann nicht nachvollziehen warum :\
tmp.Free;
end;
end.
Naja, wollts nur nicht vorenthalten haben - evtl. lohnt es sich ja doch da weiter zu denken.
Gudde Nacht,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel