Einzelnen Beitrag anzeigen

HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Klassendesign - wie umgehen mit bedingten Eigenschaften?

  Alt 21. Dez 2015, 14:34
Ich verstehe deine Aufgabenstellung jetzt so:

Ist HasFixBar True dann hat die Klasse selber den Wert, ansonsten muss der Wert gesetzt werden.

Wenn dem so ist kannst du ein Event anbieten:

Delphi-Quellcode:
  TGetBarEvent = procedure (var Bar: Integer) of object;

  TFoo = class
  strict private
    FHasFixBar: Boolean;
    FBar: Integer;
    FOnGetBar: TGetBarEvent
    function GetBar: Integer
  public
    property HasFixBar: Boolean [..];
    property Bar: Integer read GetBar [..];
    property OnGetBar: TGetBarEvent [...];
  end;

[...]

function TFoo.GetBar: Integer;
begin
  Result := Default;

  if FHasFixBar then
    Result := FBar
  else
  if Assigned(FOnGetBar) then
    FonGetBar(Result)
// und abhängig davon, wie hart du den Fehler betrachtest, dass jemand nicht die dynamik des property Bar beachtet
//else
// raise EInvalidOperation.Create('Internal Error. OnGetBar musst assigned.');
end;
  Mit Zitat antworten Zitat