Tachchen.
Delphi-Quellcode:
var
[Weak] Variable: IInterface;
[Weak] Liste: TList<IInterface>;
Liste: TList<[Weak] IInterface>; // geht nicht - Error-Insight und Compiler sagen nein
Die Variable wäre jetzt ohne Referenzzählung, im NextGen-Compiler,
aber wie definiert man eigentlich eine Liste mit Weak-Referenzen?
Bei
[Weak] Liste: TList<IInterface>;
ist natürlich (nur?) die Liste-Variable ohne Referenzzählung, aber nicht der Listeninhalt. So würde ich die
OH verstehen tun.
Kann es leider nicht ausprobieren und die Compiler sind diesbezüglich echt doof und geben keinerlei Meldungen/Fehlermeldungen, ob Attribute richtig sind oder ob sie es nicht sind.
Nichtmal bei Denen, die den Compiler und den erzeugten Code/Typen/
RTTI selber betreffen.
Die Hilfe sagt natürlich rein garnichts, zu [Weak] bei Typen. Und in der Hilfe zum WeakAttribute steht wirklich GARNICHTS (nur der bekannte nichtssagende Schrott).
Delphi-Quellcode:
type
IWeakInterface = [Weak] IInterface; // Hier sträubt sich das Error-Insight und der Compiler.
[Weak] IWeakInterface = IInterface; // Geht das?
[Weak] IWeakInterface = type IInterface; // Und ist das richtig?
var
Liste: TList<IWeakInterface>;