Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   interfaces und Debugger (https://www.delphipraxis.net/209276-interfaces-und-debugger.html)

freimatz 17. Nov 2021 10:21

interfaces und Debugger
 
Hallo zusammen,
ich verwende gerne interfaces u.a. als DTOs. Beispiel:
Delphi-Quellcode:
type
  IBlaInput = interface(IDataTransferObjectBase)
    ['{2106667F-B81D-4ACF-A8D6-740936FA0259}']
    function GetDatumSystemType(): datumSystemTypeET;
    ...
    property DatumSystemType: datumSystemTypeET read GetDatumSystemType;
    ...
  end;

function CreateCharactIsoPositionEffectiveLengthCalculatorInput(const p_DatumSystemType: datumSystemTypeET; ...: IBlaInput;

  TCharactIsoPositionEffectiveLengthCalculatorInput = class(TDataTransferObjectBase,
    ICharactIsoPositionEffectiveLengthCalculatorInput)
  strict private
    FDatumSystemType     : datumSystemTypeET;
    ...
    function GetDatumSystemType(): datumSystemTypeET;
    ...
  public
    constructor Create(const p_DatumSystemType: datumSystemTypeET; ...);
    property DatumSystemType: datumSystemTypeET read GetDatumSystemType;
    ...
  end;
In dem Fall sind es reine Datenhalter um Informationen irgendwo hinzuschicken. Aber auch sonst verwenden wir oft interfaces. Insbsondere muss man sich dann (meist) nicht um die Freigabe kümmern was oft Fehler vermeidet.
Gegenüber einer normalen Klasse oder gar einem Record hat die Sache einen grossen Nachteil: der Debugger kommt damit nicht klar. Bei einem Record setzt man das einfach ins Watch-Fenster und sieht alles. Bei einem interface sieht man keine Daten und muss erst die Properties angeben.

Wie macht Ihr das? Habt Ihr Ideen wie man das bessern könnte? (Falls ihr überhaupt versteht was ich meine ;-) )

stahli 17. Nov 2021 11:18

AW: interfaces und Debugger
 
Ich arbeite auch viel mit Interfaces und verstehe die Einschränkung der IDE auch nicht.

Schau Dir mal die Visualizer an: https://www.delphipraxis.net/189852-...ptimieren.html

Man muss diese allerdings spezifisch für die eigenen Interfaces erzeugen und registrieren. :-/

Der schöne Günther 17. Nov 2021 11:58

AW: interfaces und Debugger
 
Bringt einen bei den Debugger-Einschränkungen nicht weiter, aber trotzdem am Rande:

Wenn es wirklich nur Daten sind würde ich es als einfachen Record machen, ein Interface ist da overkill. Stichwort PODs

freimatz 17. Nov 2021 13:11

AW: interfaces und Debugger
 
Hallo,
@Günther: Ja Records sind das Gegenteil. Bei uns sind die Daten oft einfach, aber oft auch mit Arrays und Listen und auch schon manchmal polymorph.

@Strahli: Visualizer hm, dünkt mich recht aufwendig. Wir haben hunderte dieser Daten und die ändern sich auch immer wieder mal. Aber das "property AsString: String" wäre mal eine Sache die ich näher überlegen möchte.

Aaaah, noch eine Idee: die DTOs werden automatisch generiert aus dem interface, optional gibt es da auch records. Und dann kann man sich von einem interface sich das analoge Record geben lassen. Mal reinschauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf