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?