AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generische Interface-GUIDs

Ein Thema von Dennis07 · begonnen am 12. Sep 2022 · letzter Beitrag vom 15. Jun 2023
 
Dennis07

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

Generische Interface-GUIDs

  Alt 12. Sep 2022, 12:12
Delphi-Version: 11 Alexandria
Moin Loide,
habe das jetzt schon in vielen Gruppen diskutiert und alle fanden den Vorschlag eigentlich wirklich gut und wichtig.
Was wir brauchen sind einzigartig generierte GUIDs für generische Interfaces!

Was mich wirklich jedes mal abnervt ist folgendes Szenario:
Es ist ein gewöhnlicher Tag. Draußen zwitschern die Vögel, die Sonne scheint. Man sitzt so am PC und denkt sich nichts böses. Gut gelaunt deklariere ich ein generisches Interface, und will es mit verschiedenen Typparametern in einer Funktion benutzen. Was nicht geht, zumindest nicht richtig, weil beide Interfaces die gleiche VMT und die gleiche GUID benutzen, und somit weder von einander unterscheidbar, noch die Methoden des zweiten, dritten, ... Interfaces aufrufbar.

Also, von der Wahrheit eingeholt und vor der Sinnlosigkeit des Lebens erneut resignierend, deklariere ich einzeln n Ableitungen des Interfaces mit Typenspezifikationen.

Dabei könnte es so einfach sein. Eine Syntax wie diese hier könnte uns das Leben enorm erleichtern, und die Wirtschaft durch Zeiteinsparung bei der Entwicklung weit voranbringen:
Delphi-Quellcode:
type
  IGenItf<T> = geninterface
    // Keine GUID hier, denn die wird automatisch erzeugt
    function Foo: T;
    procedure Poo;
end;
Das Keyword geninterface habe ich einfach mal an dispinterface angelehnt und frei erfunden, bietet sich aber an.

Dann könnte man einfach folgendes schreiben:
Delphi-Quellcode:
type
  TImplObject = class(TInterfacedObject, IGenItf<Integer>, IGenIntf<String>)
    // Implementierungen
    function Int_Foo: T;
    procedure Int_Poo;
    function Str_Foo: T;
    procedure Str_Poo;
    // Delegationen
    function IGenItf<Integer>.Foo = Int_Foo;
    procedure IGenItf<Integer>.Poo = Int_Poo;
    function IGenItf<String>.Foo = Str_Foo;
    procedure IGenItf<String>.Poo = Str_Poo;
end;
Das mag jetzt nicht nach viel Ersparnis an Code aussehen, bei einigen Beispielen ist das aber äußerst beträchtlich.
Was haltet ihr davon?
Dennis
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz