Zitat von
choose:
Macht das denn überhaupt sinn? Weder die Codeverfolgständigung noch ErrorInsight könnten Dir beim Erstellen der "Generic-Implementierung" helfen. Deiner Aussage
Zitat von
jbh:
Dazu müsste das Plugin ja Delphicode "verstehen"
entnehme ich, dass Du bei der Bildung eines Delphi-konforment Alias wie
TIntList ohnehin nicht vorhast auf die Typkompatiblität zu prüfen, oder?
Wenn man aus Andreas' Bleistift ein ganz simples Template ableitet...
Delphi-Quellcode:
template
TTemplate<T : type> = class
private
fValue : T;
public
property Value : T read fValue write fValue;
end;
und die typisierte Verwendung in eine eigene
Unit packt...
instantiate TTemplate<Integer> as TInteger;
..., die Verwendung schließlich wieder in einer eigenen
Unit stattfindet (Ich habe sowie einen Hang dazu möglichst 1 Klasse/Datei zu haben
)...
Delphi-Quellcode:
var Instanz : TInteger;
begin
Instanz := TInteger.Create();
Instanz.Value := 1;
...
... könnte man die
IDE austricksen, da sie lieber DCUs verwendet als
PAS-Dateien.
Da Andreas
IMHO einen Wrapper um den dcc gebaut hat dürfte der Zeitstempel der TTemplate- und TInteger-
PAS somit älter als der der TInteger-
DCU sein.
Die eigentliche Prüfung übernimmt schon der Compiler, Intellisense sollte aus der
DCU funktionieren.
Ich habe mich hier mal wieder ziemlich weit aus dem Fenster gelehnt, aber ich denke das war doch der Sinn dahinter. Und falls es so funktionieren sollte wäre doch eine super Vereinfachung.
Ich freue mich schon darauf vllt mit einer Vorab-Version spielen zu können...
Was mir noch fehlt wäre die Möglichkeit innerhalb eines generischen Types auf einen generischen Typ zuzugreifen:
Delphi-Quellcode:
template
ITemplate<T : type> = interface
function getValue : T;
procedure setValue(value : T);
property Value : T read getValue write setValue;
end;
template
TTemplate<T : type> = class(TInterfacedObject, ITemplate<T>)
private
fValue : T;
function getValue : T;
procedure setValue(value : T);
public
property Value : T read getValue write setValue;
end;
Aber ich glaube kaum, dass das möglich ist.