AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign [RTTI/Generics] verschiedene Generische klassen in Dictionary?
Thema durchsuchen
Ansicht
Themen-Optionen

[RTTI/Generics] verschiedene Generische klassen in Dictionary?

Ein Thema von Edlmann · begonnen am 24. Mai 2012 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#1

AW: [RTTI] verschiedene Generische klassen in Dictionary?

  Alt 24. Mai 2012, 16:53
Die Vererbung bei den Generics ist echt sch***, bzw. garnicht vorhanden.
Es gibt keinen Basistypen ala TConVar für dein TConVar<irgendwas>.

Rate mal, warum TList und TList<T> nicht kompatibel sind.

Soll heißen, wenn du mehrere Typen von einer generischen Klasse ableitest, dann sind diese nicht zueinander kompatibel.
Das ganze nennt sich Kovarianz bzw. Kontravarianz (covariance / contravariance) und kam auch in .NET erst einige Zeit nachdem Generics eingeführt wurden in (4.0).

Das Problem ist eigentlich nicht der Generic an sich, sondern das Problem der Kompatibiltät / Vererbunghierachie der generischen parameter.

Ein TConVar<string> und ein TConVar<MyCustomType> lassen sich in .NET dadurch höchstens auf TConVar<object> vereinheitlichen. Nutzt Du constraints kannst Du höchstens auf den Constraint-Typen gehen. Aber auch das muss der Compiler erst einmal 'wissen' und umsetzen, und bei nicht ganz so typsicheren Sprachen wie Delphi ist das dann nochmal ne ecke komplizierter als in einer Welt, wo zumindest mal sichergestellt ist, das wirklich ALLES von Object ableitet (selbst der Typ 'Type').

Hier gibts nochmal Hintergrundinfos über die komplette Problemklasse und wie sie in .NET funktioniert: http://msdn.microsoft.com/en-us/library/dd799517.aspx
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz