Ein Gedankengang zum Thema "wie spare ich Tipperei".
Ich habe ein CustomObject, welches Parameter speichert. Egal wo und wie. Und es gibt eine Ableitung in der ich einige Properties definiere, welche Properties des Parent verwendet. Der Zugriff wird in der Implementation geregelt.
Delphi-Quellcode:
interface
type
TCustomSpeicherobjekt = class(TObject)
private
function GetEinStringWert(aIndex: string): string;
procedure SetEinStringWert(aIndex: string; const Value: string);
public
property EinStringWert[aIndex:string]:string read GetEinStringWert write SetEinStringWert;
end;
TMeinSpeicherobjekt = class(TCustomSpeicherobjekt)
private
function GetWertA: string;
function GetWertB: string;
procedure SetWertA(const Value: string);
procedure SetWertB(const Value: string);
public
property WertA:string read GetWertA write SetWertA;
property WertB:string read GetWertB write SetWertB;
end;
implementation
{ TMeinSpeicherobjekt }
function TCustomSpeicherobjekt.GetEinStringWert(aIndex: string): string;
begin
// Hier steht Code zum Lesen
end;
procedure TCustomSpeicherobjekt.SetEinStringWert(aIndex: string; const Value: string);
begin
// Hier steht Code zum Schreiben
end;
{ TMeinSpeicherobjekt }
function TMeinSpeicherobjekt.GetWertA: string;
begin
Result:=EinStringWert['WertA'];
end;
function TMeinSpeicherobjekt.GetWertB: string;
begin
Result:=EinStringWert['WertB'];
end;
procedure TMeinSpeicherobjekt.SetWertA(const Value: string);
begin
EinStringWert['WertA']:=Value;
end;
procedure TMeinSpeicherobjekt.SetWertB(const Value: string);
begin
EinStringWert['WertB']:=Value;
end;
Gibt es einge Möglichkeit den Code zu verkürzen. Ich denke an so etwas wie die direkte Funktionsübergabe mit Parameter. Dann könnte man sich die Implementation sparen.
Beispiel:
Delphi-Quellcode:
TMeinSpeicherobjekt = class(TCustomSpeicherobjekt)
private
public
// Entweder so
property WertA:string read EinStringWert['WertA'] write EinStringWert['WertA'];
// oder so
property WertB:string read GetEinStringWert('WertB') write SetEinStringWert('WertB');
end;
Oder gibt es andere Ansätze?