Einzelnen Beitrag anzeigen

Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Generische Interface-GUIDs

  Alt 12. Sep 2022, 16:47
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.
Dennis

Geändert von Dennis07 (12. Sep 2022 um 17:10 Uhr)
  Mit Zitat antworten Zitat