Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#1

"forward" von Units mit Record/Class Helpern

  Alt 28. Aug 2018, 08:50
Delphi-Version: 5
Hallo zusammen,

mangels besserer Bezeichnung nenne ich das was ich möchte mal "Unit forwarding",
und zwar aus einem Base-Unit die Klassen in ein Interface-Unit übernehmen und re-deklarieren.
So das nur noch das Interface-Unit in der Anwendung benutzt werden muss.


Base-Unit
Delphi-Quellcode:
interface Pages.Types;

type
    TPage_Elem = (Eins, Zwei); // Hier werden diese Klassen etc. definiert
    TPage_Elem_Helper = record helper for TPage_Elem; // Hier kann es Helper geben
       procedure DoDomething;
    end;

...
...
Interface-Unit
Delphi-Quellcode:
interface Pages;

Uses
    Pages.Types // Hier sind Klassen, Records, Enums, etc. definiert, s.o.
  ;

type
    TPage_Elem = Pages.Types.TPage_Elem; // Hier werden diese Klassen etc. ge-forwared
    TPage_Elem_Helper = Pages.Types.TPage_Elem_Helper; // das möchte ich auch mit Helpern so machen
und dann nur per Interface nutzen, während die Implementation in den Base-Units bleibt.

Delphi-Quellcode:
interface Main_Unit;

Uses
  Pages; // die Typen aus den Base-Units werden hier ge-forwarded und sind direkt nutzbar

...
...

procedure Test;
begin

  LElem := TPage_Elem.Eins; // Alles OK, kann ich benutzen mit Klassen, Records, Enums ...
  LElem.DoSomething // <-- ! Hier kann es nicht kompiliert werden, die Base-Units werden benötigt

end;

Gibt es da einen Trick wie man auch die Helper aus den Base-Units "forwarden" kann ?
Oder ist sowas etwa ein schlechter Stil ?

Rollo
  Mit Zitat antworten Zitat