![]() |
Delphi-Version: XE5
Generics in Attributen?
Folgendes
Delphi-Quellcode:
liefert
MyAttribute<T> = class(TCustomAttribute)
protected var someValue: T; public constructor Create(const someValue: T); end; TMyTaggedClass = class protected var [MyAttribute<Integer>(123)] someVariable: String; end;
Code:
[dcc32 Warnung] Project2.dpr(25): W1025 Sprach-Feature wird nicht unterstützt: 'Benutzerdefiniertes Attribut'
Stelle ich mich zu dumm an oder kann ich die Idee vergessen? Ich wollte ein paar Feldern ein Art Default-Wert mitgeben. Und ich wollte vermeiden, für jeden möglichen Typ ein eigenes Attribut basteln zu müssen... |
AW: Generics in Attributen?
Da kommt einfach irgendwas mit dem < und > im Typnamen nicht klar.
Dieses Problem ist auch bei anderen Dingen vertreten, wie z.B. publisched Felder in der DFM und, ich glaub, das DataSnap muckte da auch etwas rum.
Delphi-Quellcode:
type
MyGenericAttribute<T> = class(TCustomAttribute) protected var someValue: T; public constructor Create(const someValue: T); end; MyIntegerAttribute = class(MyGenericAttribute<Integer>); MyStringAttribute = class(MyGenericAttribute<String>); TMyTaggedClass = class protected var [MyIntegerAttribute(123)] someVariable: String; end; |
AW: Generics in Attributen?
Das liegt evtl. auch an der automatischen Suffexierung der Delphi-Attribute mit "attribute". Dein Beispiel sollte ja auch mit
Delphi-Quellcode:
gültig sein.
My(123)
|
AW: Generics in Attributen?
Stimmt, das könnte wirklich daran liegen...
|
AW: Generics in Attributen?
|
AW: Generics in Attributen?
Zitat:
Zitat:
Das, was die da machen, ist einen Alias zu verwenden, aber der Compiler ersetzt diesen sofort wieder durch den eigentlichen Typ, womit der Code dem des TEs entspricht. "Richtig" ableiten, siehe mein Beispiel. |
AW: Generics in Attributen?
Zitat:
Das "ableiten", das du in deinem Quote bemängelst, hat hier wohl eher die Bedeutung von "herleiten" im Sinne von Informationen ermitteln. Der Englische Originaltext macht das deutlicher: Zitat:
|
AW: Generics in Attributen?
Dann ist aber der Compiler defekt, wenn er die richtige Fehlermeldung nur bei einem Alias ausgibt, obwohl er eigentlich den generischen Typ meint. :wall:
PS: Zumindestens (in XE3) gibt sogar das Error-Insight einen Fehler aus, daß es den generischen Typ dort nicht mag. :thumb: (auch wenn dessen Fehlermeldung nichtssagend ist) |
AW: Generics in Attributen?
Zitat:
Ich hatte eigentlich damit gerechnet, daß der Bug in XE6 behoben ist, aber... |
AW: Generics in Attributen?
Zitat:
Zitat:
Trotzdem etwas schade, dass es nicht geht. Das Beispiel im DocWiki ist auch so ziemlich, was ich vorhatte. Aber naja, in Java geht's schließlich auch nicht :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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