Thema: Delphi Property in Interface??

Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Property in Interface??

  Alt 20. Mär 2006, 10:50
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...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat