Moin Mieze, moin Andreas
Da ihr zwei euch doch etwas mehr mit Delphis internals auskennt...
Gibt es hier einen Trick um einen Getter/Setter zu deklarieren, der die gleiche Signatur wie die direkte Verwendung eines Feldes in der read/write Clause hat?
Nehmen wir folgende Klasse:
Delphi-Quellcode:
TSample = class
private
fValue : Integer;
procedure setValue(value : Integer);
public
property Value : Integer read fValue write setValue;
end;
Jetzt noch folgendes Interface
Delphi-Quellcode:
ISample = interface
function getValue : Integer;
procedure setValue(value : Integer);
property Value : Integer read getValue write setValue;
end;
Da man properties nicht abstrakt deklarieren kann, muss ich ja hier explizit eine Getter und Setter
methode definieren.
Wenn ich jetzt ISample an eine Property vom Type TSample delegieren will, habe ich das Propblem, dass der Getter nicht die richtige Signatur hat.
Hier fehlt ihm der Getter:
Delphi-Quellcode:
TAggregatedSample = class(TInterfacedObject, ISample)
private
fSample : TSample;
protected
property Sample : TSample read fSample implements ISample;
end;
Und das hier ist irgendwie ziemlich unschön:
Delphi-Quellcode:
TAggregatedSample = class(TInterfacedObject, ISample)
private
fSample : TSample;
protected
function getValue : Integer;
property Sample : TSample read fSample implements ISample;
end;
...
function TAggregatedSample.getValue : Integer;
begin
result := fSample.Value;
end;
Also ist es möglich eine Methode zu deklarieren, die die gleiche Signatur wie "read fValue" hat?
Ich hoffe mit den Beispielen war klar, was ich meinte...