Berücksichtig man den Fakt, dass in Delphi zwei an verschiedenen Stellen deklarierte TList<string> auch formell zwei unterschiedliche Typen sind
Jo, aber das ist ja eine Klasse. Klassen identifizieren sich ja über die Klassenreferenz, Interfaces hingegen über ihre
GUID. Wenn du zweimal das gleiche Interface mit der selben
GUID hast, dann ist es auch das selbe. Das ist ja gerade der Sinn eines Interfaces, sonst bräuchte man die ja nicht (abgesehen von ARC und Mehrfachableitung natürlich).
Mach halt einfach kein supports auf nen generisches interface
Ja okay, und wie soll man das sonst machen? Außerdem löst es das Problem auch nicht, dass die Adressen in der
VMT auf die selbe Stelle zeigen.
Und bei jeden Full Build kommt eine andere
GUID bei raus?
Ja entweder das, oder sie werden in der DPROJ gecached, keine Ahnung. Da man auf Interfaces im Code aber eh nicht direkt über ein TGUID-Objekt, sondern in der Regel über den Interface-Namen zugreifen sollte, spielt das in 99,9% der Fälle keine Rolle. Für den Rest der Fälle muss man das dann halt konventionell lösen.
utomatisch generierte GUIDs würden jedenfalls nur einen Teil der Probleme lösen. Ich hatte das Thema GUIDs bei generischen Interfaces auch schon, wenn auch mit anderem Hintergrund. Mir fällt aber schlicht keine wirklich sinnvolle Lösung dafür ein. Deshalb hatte ich dazu auch keinen Featurerequest geschrieben bzw. erst einmal danach gesucht.
Jo, das ist richtig.
Hast du einen Link?
Es könnte auch sein, dass garkeine
GUID generiert wird und die einfach nur 0000-000-00000-0000.... ist
Mir war so, als wenn der Compiler bei Interfaces "ohne"
GUID eh gewisse Dinge verbietet / nicht kompilert, wie z.B. die Verwendung von IS und AS.
Somit wäre dabei die
GUID dann eh egal, wenn sie nie verwendet würde.
Das ist richtig, du kannst den Interfacetypen nicht direkt als Bezeichner übergeben, falls du keine
GUID definiert hast. Außerdem funktioniert "as" nicht.
Genau deshalb sind GUIDs ja so wichtig.