Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.600 Beiträge
 
Delphi 10.3 Rio
 
#1

Zirkuläre Unit Referenz auflösen

  Alt 15. Dez 2017, 16:48
Hallo zusammen,

ich stehe gerade vor einem etwas blöden Problem wo ich gerne mal eure Hilfe hätte.


Ich habe folgendes Konstrukt:


Unit A (verkürzt):
Delphi-Quellcode:
unit Common.Interfaces;

interface

uses
  UnitB;

type
  IMyInterface = interface
    procedure SomeMethod;
  end;

  IMyOtherInterface = interface
    function SomeOtherFunction: TSomeRecord;
  end;

Unit B:
Delphi-Quellcode:
unit Common.Types;

interface

uses
  UnitA; // <--- Ist ja nicht möglich, da UnitA schon UnitB referenziert

type
  TSomeRecord = record
    SomeInteger: Integer;
    InterfaceReference: IMyInterface;
  end;
Wie kann ich elegant diese zirkuläre Referenz auflösen? Es gäbe meiner Meinung nach zwei Möglichkeiten. Entweder den Record in die Unit Common.Interfaces reinschubsen oder für IMyInterface eine eigene Unit zu machen.

Bei der ersten Lösung habe ich keine saubere Trennung mehr zwischen Interfaces und anderen Datentypen. Das gefällt mir irgendwie nicht.

Bei der zweiten Lösung gefällt mir nicht, dass ich dann prinzipiell für jedes Interface eine einzelne Unit machen müsste wenn denn da noch mehr Referenzierungen auftreten würden.



Wie löst ihr ein solches Problem? Gibt es eventuell noch irgendwelche Möglichkeiten das besser zu machen?
  Mit Zitat antworten Zitat